From 4f4167e52a498e61d526d3415b297c03080b8839 Mon Sep 17 00:00:00 2001 From: Kilian Date: Thu, 22 Feb 2024 15:04:39 +0100 Subject: [PATCH] v240222 --- .gitattributes | 57 - .gitignore | 5 +- .gitmessage | 7 - .vscode/sftp.json | 3 +- AA-TODO's | 1 + doc/.gitignore | 1 - doc/images/README.md | 25 - doc/images/appicon_128.png | Bin 1665 -> 0 bytes doc/images/appicon_16.ico | Bin 1406 -> 0 bytes doc/images/appicon_16.png | Bin 338 -> 0 bytes doc/images/appicon_32.ico | Bin 2238 -> 0 bytes doc/images/appicon_32.png | Bin 549 -> 0 bytes doc/images/appicon_48.ico | Bin 3774 -> 0 bytes doc/images/appicon_64.png | Bin 946 -> 0 bytes doc/images/background_dolibarr.jpg | Bin 167014 -> 0 bytes doc/images/doliadmin.ico | Bin 318 -> 0 bytes doc/images/dolibarr_256x256_black.png | Bin 1715 -> 0 bytes doc/images/dolibarr_256x256_black.svg | 313 - doc/images/dolibarr_256x256_color.png | Bin 3464 -> 0 bytes doc/images/dolibarr_256x256_color.svg | 123 - doc/images/dolibarr_256x256_white.jpg | Bin 2601 -> 0 bytes doc/images/dolibarr_256x256_white.png | Bin 3254 -> 0 bytes doc/images/dolibarr_256x256_white.svg | 327 - doc/images/dolibarr_512x512_color.png | Bin 8533 -> 0 bytes doc/images/dolibarr_favicon.ico | Bin 2238 -> 0 bytes doc/images/dolibarr_logo.jpg | Bin 18776 -> 0 bytes doc/images/dolibarr_logo.png | Bin 10312 -> 0 bytes doc/images/dolibarr_logo.svg | 209 - .../dolibarr_screenshot10_1920x1080.jpg | Bin 311204 -> 0 bytes doc/images/dolibarr_screenshot11_1024x768.jpg | Bin 67099 -> 0 bytes .../dolibarr_screenshot12_1920x1080.jpg | Bin 216262 -> 0 bytes doc/images/dolibarr_screenshot1_1280x800.jpg | Bin 140952 -> 0 bytes doc/images/dolibarr_screenshot1_1920x1080.jpg | Bin 278100 -> 0 bytes doc/images/dolibarr_screenshot2_1280x800.jpg | Bin 159669 -> 0 bytes doc/images/dolibarr_screenshot3_1280x800.png | Bin 132113 -> 0 bytes doc/images/dolibarr_screenshot4_1920x1080.jpg | Bin 199976 -> 0 bytes doc/images/dolibarr_screenshot5_1280x800.jpg | Bin 135317 -> 0 bytes doc/images/dolibarr_screenshot5_1920x1080.jpg | Bin 271776 -> 0 bytes doc/images/dolibarr_screenshot6_1920x1080.jpg | Bin 210977 -> 0 bytes doc/images/dolibarr_screenshot7_1920x1080.jpg | Bin 160337 -> 0 bytes doc/images/dolibarr_screenshot8_1920x1080.jpg | Bin 224693 -> 0 bytes doc/images/dolibarr_screenshot9_1920x1080.jpg | Bin 225077 -> 0 bytes doc/images/dolihelp.ico | Bin 1150 -> 0 bytes doc/images/doliwampoff.ico | Bin 2238 -> 0 bytes doc/images/doliwampon.ico | Bin 2238 -> 0 bytes doc/images/invoice.png | Bin 54939 -> 0 bytes doc/index.html | 22 - doc/install/README | 25 - doc/install/README-DE | 45 - doc/install/README-FR | 26 - doc/user/README | 8 - doc/user/README-DE | 13 - doc/user/README-FR | 8 - htdocs/admin/modules.php | 16 +- htdocs/asterisk/wrapper.php | 216 - htdocs/conf/conf.php | 10 +- htdocs/core/db/mysqli.class.php | 24 +- htdocs/core/lib/admin.lib.php | 13 +- htdocs/core/lib/asset.lib.php | 8 +- htdocs/core/lib/company.lib.php | 64 +- htdocs/core/lib/contact.lib.php | 16 +- htdocs/core/lib/contract.lib.php | 16 +- htdocs/core/lib/fourn.lib.php | 8 +- htdocs/core/lib/invoice.lib.php | 8 +- htdocs/core/lib/pdf.lib.php | 2 +- htdocs/core/lib/product.lib.php | 18 +- htdocs/core/lib/resource.lib.php | 16 +- htdocs/core/lib/usergroups.lib.php | 110 +- htdocs/core/lib/website.lib.php | 212 +- htdocs/core/menus/standard/eldy.lib.php | 20 +- .../doc_generic_proposal_html.modules.php} | 160 +- .../doc/pdf_peitureteufela.modules.php | 2080 +++++++ .../emailtracker/class/emails.class.php | 4 +- .../core/modules/modEmailTracker.class.php | 2 + .../emailtracker/tab_invoice_supplier.php | 6 +- .../DataCollector/DolConfigCollector.php | 89 - .../DataCollector/DolExceptionsCollector.php | 35 - .../class/DataCollector/DolLogsCollector.php | 212 - .../DataCollector/DolMemoryCollector.php | 48 - .../DataCollector/DolMessagesCollector.php | 36 - .../class/DataCollector/DolPhpCollector.php | 168 - .../class/DataCollector/DolQueryCollector.php | 117 - .../DataCollector/DolRequestDataCollector.php | 61 - .../DataCollector/DolTimeDataCollector.php | 34 - .../class/DataCollector/DolibarrCollector.php | 156 - htdocs/debugbar/class/DebugBar.php | 64 - htdocs/debugbar/class/TraceableDB.php | 723 --- htdocs/debugbar/class/autoloader.php | 35 - htdocs/debugbar/js/widgets.js | 75 - htdocs/fourn/card.php | 7 +- .../fourn/class/fournisseur.facture.class.php | 10 +- htdocs/fourn/facture/card.php | 4 +- htdocs/fourn/facture/document.php | 4 +- htdocs/fourn/facture/list.php | 105 +- htdocs/includes/html2pdf/Segment.php | 273 + htdocs/includes/html2pdf/SegmentIterator.php | 58 + htdocs/includes/html2pdf/html2pdf.php | 1012 +++ htdocs/includes/html2pdf/zip/PclZipProxy.php | 160 + htdocs/includes/html2pdf/zip/PhpZipProxy.php | 92 + htdocs/includes/html2pdf/zip/ZipInterface.php | 50 + .../html2pdf/zip/pclzip/LICENSE} | 156 +- .../html2pdf/zip/pclzip/composer.json | 20 + .../includes/html2pdf/zip/pclzip/gnu-lgpl.txt | 504 ++ .../html2pdf/zip/pclzip/pclzip.lib.php | 5415 +++++++++++++++++ .../includes/html2pdf/zip/pclzip/readme.txt | 425 ++ .../mailmanspip/class/mailmanspip.class.php | 418 -- htdocs/modulebuilder/README.md | 17 - htdocs/modulebuilder/admin/setup.php | 211 - htdocs/modulebuilder/index.php | 4682 -------------- htdocs/modulebuilder/template/ChangeLog.md | 5 - htdocs/modulebuilder/template/README.md | 86 - htdocs/modulebuilder/template/admin/about.php | 105 - .../template/admin/myobject_extrafields.php | 147 - htdocs/modulebuilder/template/admin/setup.php | 588 -- .../modulebuilder/template/ajax/myobject.php | 68 - .../template/build/doxygen/mymodule.doxyfile | 2419 -------- .../template/build/makepack-mymodule.conf | 11 - .../template/class/actions_mymodule.class.php | 363 -- .../template/class/api_mymodule.class.php | 395 -- .../template/class/myobject.class.php | 1177 ---- .../template/core/boxes/README.md | 1 - .../template/core/boxes/mymodulewidget1.php | 217 - .../mailinglist_mymodule_myobject.modules.php | 199 - .../core/modules/modMyModule.class.php | 501 -- .../doc/pdf_standard_myobject.modules.php | 1343 ---- .../mymodule/mod_myobject_advanced.php | 146 - .../mymodule/mod_myobject_standard.php | 161 - .../modules/mymodule/modules_myobject.php | 194 - .../tpl/linkedobjectblock_myobject.tpl.php | 58 - .../template/core/triggers/README.md | 1 - ..._99_modMyModule_MyModuleTriggers.class.php | 323 - .../template/css/mymodule.css.php | 110 - .../template/doc/Documentation.asciidoc | 56 - .../Documentation_full_en.example.asciidoc | 138 - htdocs/modulebuilder/template/img/README.md | 14 - .../modulebuilder/template/js/mymodule.js.php | 99 - .../template/langs/en_US/mymodule.lang | 54 - .../template/lib/mymodule.lib.php | 76 - .../template/lib/mymodule_myobject.lib.php | 110 - .../modulebuilder/template/modulebuilder.txt | 3 - .../modulebuilder/template/mymoduleindex.php | 251 - .../template/myobject_agenda.php | 321 - .../modulebuilder/template/myobject_card.php | 621 -- .../template/myobject_contact.php | 228 - .../template/myobject_document.php | 261 - .../modulebuilder/template/myobject_list.php | 850 --- .../modulebuilder/template/myobject_note.php | 221 - .../template/scripts/mymodule.php | 209 - htdocs/modulebuilder/template/sql/data.sql | 32 - .../template/sql/dolibarr_allversions.sql | 3 - .../sql/llx_mymodule_myobject.key.sql | 24 - .../template/sql/llx_mymodule_myobject.sql | 30 - .../llx_mymodule_myobject_extrafields.key.sql | 19 - .../sql/llx_mymodule_myobject_extrafields.sql | 23 - .../template/sql/update_x.x.x-y.y.y.sql | 4 - .../test/phpunit/MyModuleFunctionalTest.php | 304 - .../template/test/phpunit/MyObjectTest.php | 200 - htdocs/opensurvey/card.php | 438 -- .../class/opensurveysondage.class.php | 708 --- htdocs/opensurvey/css/style.css | 531 -- htdocs/opensurvey/exportcsv.php | 142 - htdocs/opensurvey/img/accept-24.png | Bin 1477 -> 0 bytes htdocs/opensurvey/img/accept.png | Bin 775 -> 0 bytes htdocs/opensurvey/img/add-16.png | Bin 732 -> 0 bytes htdocs/opensurvey/img/add-24.png | Bin 1185 -> 0 bytes htdocs/opensurvey/img/calendar-32.png | Bin 1694 -> 0 bytes htdocs/opensurvey/img/chart-32.png | Bin 1648 -> 0 bytes htdocs/opensurvey/img/date.png | Bin 57814 -> 0 bytes htdocs/opensurvey/img/fforward.png | Bin 1196 -> 0 bytes htdocs/opensurvey/img/medaille.png | Bin 656 -> 0 bytes htdocs/opensurvey/img/next.png | Bin 1156 -> 0 bytes htdocs/opensurvey/img/object_opensurvey.png | Bin 722 -> 0 bytes htdocs/opensurvey/img/opensurvey.png | Bin 2113 -> 0 bytes htdocs/opensurvey/img/previous.png | Bin 1212 -> 0 bytes htdocs/opensurvey/img/rewind.png | Bin 1202 -> 0 bytes htdocs/opensurvey/img/sondage2.png | Bin 67659 -> 0 bytes htdocs/opensurvey/index.php | 89 - htdocs/opensurvey/lib/opensurvey.lib.php | 278 - htdocs/opensurvey/list.php | 576 -- htdocs/opensurvey/results.php | 1170 ---- htdocs/opensurvey/wizard/choix_autre.php | 162 - htdocs/opensurvey/wizard/choix_date.php | 575 -- htdocs/opensurvey/wizard/create_survey.php | 214 - htdocs/opensurvey/wizard/index.php | 70 - htdocs/paybox/admin/paybox.php | 299 - htdocs/paybox/img/object_paybox.png | Bin 10166 -> 0 bytes htdocs/paybox/lib/paybox.lib.php | 229 - htdocs/paypal/admin/paypal.php | 387 -- htdocs/paypal/img/object_paypal.png | Bin 6962 -> 0 bytes htdocs/paypal/lib/paypal.lib.php | 617 -- htdocs/paypal/lib/paypalfunctions.lib.php | 81 - htdocs/stripe/admin/stripe.php | 627 -- htdocs/stripe/ajax/ajax.php | 124 - htdocs/stripe/charge.php | 299 - htdocs/stripe/class/actions_stripe.class.php | 218 - htdocs/stripe/class/stripe.class.php | 1293 ---- htdocs/stripe/config.php | 55 - htdocs/stripe/lib/stripe.lib.php | 126 - htdocs/stripe/payout.php | 178 - htdocs/stripe/transaction.php | 242 - htdocs/zapier/README.md | 10 - htdocs/zapier/admin/about.php | 88 - htdocs/zapier/admin/setup.php | 129 - htdocs/zapier/class/api_zapier.class.php | 387 -- htdocs/zapier/class/hook.class.php | 707 --- htdocs/zapier/lib/zapier.lib.php | 60 - installer/install_creorga.ps1 | 46 + installer/installlist.json | 35 + tmp.php | 6 + tools/doap/README | 13 - tools/doxygen/dolibarr-doxygen-build.pl | 55 - tools/doxygen/dolibarr-doxygen-filter.pl | 88 - tools/doxygen/dolibarr-doxygen-getversion.pl | 21 - tools/doxygen/dolibarr-doxygen.doxyfile | 1636 ----- tools/doxygen/doxygen_footer.html | 26 - tools/doxygen/doxygen_header.html | 52 - tools/examples/zapier/.editorconfig | 21 - tools/examples/zapier/.gitignore | 8 - tools/examples/zapier/.travis.yml | 7 - tools/examples/zapier/README.md | 6 - tools/examples/zapier/action.json | 56 - tools/examples/zapier/authentication.js | 102 - tools/examples/zapier/creates/contact.js | 74 - tools/examples/zapier/creates/member.js | 74 - tools/examples/zapier/creates/thirdparty.js | 90 - tools/examples/zapier/index.js | 93 - tools/examples/zapier/package.json | 24 - tools/examples/zapier/resources/resources.js | 0 tools/examples/zapier/searches/contact.js | 95 - tools/examples/zapier/searches/member.js | 88 - tools/examples/zapier/searches/thirdparty.js | 95 - tools/examples/zapier/test/index.js | 17 - tools/examples/zapier/triggers/action.js | 178 - tools/examples/zapier/triggers/contact.js | 171 - tools/examples/zapier/triggers/member.js | 171 - tools/examples/zapier/triggers/order.js | 149 - tools/examples/zapier/triggers/thirdparty.js | 188 - tools/examples/zapier/triggers/ticket.js | 237 - tools/examples/zapier/triggers/user.js | 177 - tools/flatpack/org.flatpak.Dolibarr.json | 1 - tools/patch/README | 11 - tools/patch/buildpatch.sh | 21 - 242 files changed, 10732 insertions(+), 37001 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitmessage create mode 100644 AA-TODO's delete mode 100644 doc/.gitignore delete mode 100644 doc/images/README.md delete mode 100644 doc/images/appicon_128.png delete mode 100644 doc/images/appicon_16.ico delete mode 100644 doc/images/appicon_16.png delete mode 100644 doc/images/appicon_32.ico delete mode 100644 doc/images/appicon_32.png delete mode 100644 doc/images/appicon_48.ico delete mode 100644 doc/images/appicon_64.png delete mode 100644 doc/images/background_dolibarr.jpg delete mode 100644 doc/images/doliadmin.ico delete mode 100644 doc/images/dolibarr_256x256_black.png delete mode 100644 doc/images/dolibarr_256x256_black.svg delete mode 100644 doc/images/dolibarr_256x256_color.png delete mode 100644 doc/images/dolibarr_256x256_color.svg delete mode 100644 doc/images/dolibarr_256x256_white.jpg delete mode 100644 doc/images/dolibarr_256x256_white.png delete mode 100644 doc/images/dolibarr_256x256_white.svg delete mode 100644 doc/images/dolibarr_512x512_color.png delete mode 100644 doc/images/dolibarr_favicon.ico delete mode 100644 doc/images/dolibarr_logo.jpg delete mode 100644 doc/images/dolibarr_logo.png delete mode 100644 doc/images/dolibarr_logo.svg delete mode 100644 doc/images/dolibarr_screenshot10_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot11_1024x768.jpg delete mode 100644 doc/images/dolibarr_screenshot12_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot1_1280x800.jpg delete mode 100644 doc/images/dolibarr_screenshot1_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot2_1280x800.jpg delete mode 100644 doc/images/dolibarr_screenshot3_1280x800.png delete mode 100644 doc/images/dolibarr_screenshot4_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot5_1280x800.jpg delete mode 100644 doc/images/dolibarr_screenshot5_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot6_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot7_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot8_1920x1080.jpg delete mode 100644 doc/images/dolibarr_screenshot9_1920x1080.jpg delete mode 100644 doc/images/dolihelp.ico delete mode 100644 doc/images/doliwampoff.ico delete mode 100644 doc/images/doliwampon.ico delete mode 100644 doc/images/invoice.png delete mode 100644 doc/index.html delete mode 100644 doc/install/README delete mode 100644 doc/install/README-DE delete mode 100644 doc/install/README-FR delete mode 100644 doc/user/README delete mode 100644 doc/user/README-DE delete mode 100644 doc/user/README-FR delete mode 100644 htdocs/asterisk/wrapper.php rename htdocs/{modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php => core/modules/propale/doc/doc_generic_proposal_html.modules.php} (76%) create mode 100644 htdocs/core/modules/propale/doc/pdf_peitureteufela.modules.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolConfigCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolExceptionsCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolLogsCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolMemoryCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolMessagesCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolPhpCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolQueryCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolRequestDataCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolTimeDataCollector.php delete mode 100644 htdocs/debugbar/class/DataCollector/DolibarrCollector.php delete mode 100644 htdocs/debugbar/class/DebugBar.php delete mode 100644 htdocs/debugbar/class/TraceableDB.php delete mode 100644 htdocs/debugbar/class/autoloader.php delete mode 100644 htdocs/debugbar/js/widgets.js create mode 100644 htdocs/includes/html2pdf/Segment.php create mode 100644 htdocs/includes/html2pdf/SegmentIterator.php create mode 100644 htdocs/includes/html2pdf/html2pdf.php create mode 100644 htdocs/includes/html2pdf/zip/PclZipProxy.php create mode 100644 htdocs/includes/html2pdf/zip/PhpZipProxy.php create mode 100644 htdocs/includes/html2pdf/zip/ZipInterface.php rename htdocs/{modulebuilder/template/COPYING => includes/html2pdf/zip/pclzip/LICENSE} (84%) create mode 100644 htdocs/includes/html2pdf/zip/pclzip/composer.json create mode 100644 htdocs/includes/html2pdf/zip/pclzip/gnu-lgpl.txt create mode 100644 htdocs/includes/html2pdf/zip/pclzip/pclzip.lib.php create mode 100644 htdocs/includes/html2pdf/zip/pclzip/readme.txt delete mode 100644 htdocs/mailmanspip/class/mailmanspip.class.php delete mode 100644 htdocs/modulebuilder/README.md delete mode 100644 htdocs/modulebuilder/admin/setup.php delete mode 100644 htdocs/modulebuilder/index.php delete mode 100644 htdocs/modulebuilder/template/ChangeLog.md delete mode 100644 htdocs/modulebuilder/template/README.md delete mode 100644 htdocs/modulebuilder/template/admin/about.php delete mode 100644 htdocs/modulebuilder/template/admin/myobject_extrafields.php delete mode 100644 htdocs/modulebuilder/template/admin/setup.php delete mode 100644 htdocs/modulebuilder/template/ajax/myobject.php delete mode 100644 htdocs/modulebuilder/template/build/doxygen/mymodule.doxyfile delete mode 100644 htdocs/modulebuilder/template/build/makepack-mymodule.conf delete mode 100644 htdocs/modulebuilder/template/class/actions_mymodule.class.php delete mode 100644 htdocs/modulebuilder/template/class/api_mymodule.class.php delete mode 100644 htdocs/modulebuilder/template/class/myobject.class.php delete mode 100644 htdocs/modulebuilder/template/core/boxes/README.md delete mode 100644 htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php delete mode 100644 htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php delete mode 100644 htdocs/modulebuilder/template/core/modules/modMyModule.class.php delete mode 100644 htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php delete mode 100644 htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php delete mode 100644 htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php delete mode 100644 htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php delete mode 100644 htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php delete mode 100644 htdocs/modulebuilder/template/core/triggers/README.md delete mode 100644 htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php delete mode 100644 htdocs/modulebuilder/template/css/mymodule.css.php delete mode 100644 htdocs/modulebuilder/template/doc/Documentation.asciidoc delete mode 100644 htdocs/modulebuilder/template/doc/Documentation_full_en.example.asciidoc delete mode 100644 htdocs/modulebuilder/template/img/README.md delete mode 100644 htdocs/modulebuilder/template/js/mymodule.js.php delete mode 100644 htdocs/modulebuilder/template/langs/en_US/mymodule.lang delete mode 100644 htdocs/modulebuilder/template/lib/mymodule.lib.php delete mode 100644 htdocs/modulebuilder/template/lib/mymodule_myobject.lib.php delete mode 100644 htdocs/modulebuilder/template/modulebuilder.txt delete mode 100644 htdocs/modulebuilder/template/mymoduleindex.php delete mode 100644 htdocs/modulebuilder/template/myobject_agenda.php delete mode 100644 htdocs/modulebuilder/template/myobject_card.php delete mode 100644 htdocs/modulebuilder/template/myobject_contact.php delete mode 100644 htdocs/modulebuilder/template/myobject_document.php delete mode 100644 htdocs/modulebuilder/template/myobject_list.php delete mode 100644 htdocs/modulebuilder/template/myobject_note.php delete mode 100644 htdocs/modulebuilder/template/scripts/mymodule.php delete mode 100644 htdocs/modulebuilder/template/sql/data.sql delete mode 100644 htdocs/modulebuilder/template/sql/dolibarr_allversions.sql delete mode 100644 htdocs/modulebuilder/template/sql/llx_mymodule_myobject.key.sql delete mode 100644 htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql delete mode 100644 htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.key.sql delete mode 100644 htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.sql delete mode 100644 htdocs/modulebuilder/template/sql/update_x.x.x-y.y.y.sql delete mode 100644 htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php delete mode 100644 htdocs/modulebuilder/template/test/phpunit/MyObjectTest.php delete mode 100644 htdocs/opensurvey/card.php delete mode 100644 htdocs/opensurvey/class/opensurveysondage.class.php delete mode 100644 htdocs/opensurvey/css/style.css delete mode 100644 htdocs/opensurvey/exportcsv.php delete mode 100644 htdocs/opensurvey/img/accept-24.png delete mode 100644 htdocs/opensurvey/img/accept.png delete mode 100644 htdocs/opensurvey/img/add-16.png delete mode 100644 htdocs/opensurvey/img/add-24.png delete mode 100644 htdocs/opensurvey/img/calendar-32.png delete mode 100644 htdocs/opensurvey/img/chart-32.png delete mode 100644 htdocs/opensurvey/img/date.png delete mode 100644 htdocs/opensurvey/img/fforward.png delete mode 100644 htdocs/opensurvey/img/medaille.png delete mode 100644 htdocs/opensurvey/img/next.png delete mode 100644 htdocs/opensurvey/img/object_opensurvey.png delete mode 100644 htdocs/opensurvey/img/opensurvey.png delete mode 100644 htdocs/opensurvey/img/previous.png delete mode 100644 htdocs/opensurvey/img/rewind.png delete mode 100644 htdocs/opensurvey/img/sondage2.png delete mode 100644 htdocs/opensurvey/index.php delete mode 100644 htdocs/opensurvey/lib/opensurvey.lib.php delete mode 100644 htdocs/opensurvey/list.php delete mode 100644 htdocs/opensurvey/results.php delete mode 100644 htdocs/opensurvey/wizard/choix_autre.php delete mode 100644 htdocs/opensurvey/wizard/choix_date.php delete mode 100644 htdocs/opensurvey/wizard/create_survey.php delete mode 100644 htdocs/opensurvey/wizard/index.php delete mode 100644 htdocs/paybox/admin/paybox.php delete mode 100644 htdocs/paybox/img/object_paybox.png delete mode 100644 htdocs/paybox/lib/paybox.lib.php delete mode 100644 htdocs/paypal/admin/paypal.php delete mode 100644 htdocs/paypal/img/object_paypal.png delete mode 100644 htdocs/paypal/lib/paypal.lib.php delete mode 100644 htdocs/paypal/lib/paypalfunctions.lib.php delete mode 100644 htdocs/stripe/admin/stripe.php delete mode 100644 htdocs/stripe/ajax/ajax.php delete mode 100644 htdocs/stripe/charge.php delete mode 100644 htdocs/stripe/class/actions_stripe.class.php delete mode 100644 htdocs/stripe/class/stripe.class.php delete mode 100644 htdocs/stripe/config.php delete mode 100644 htdocs/stripe/lib/stripe.lib.php delete mode 100644 htdocs/stripe/payout.php delete mode 100644 htdocs/stripe/transaction.php delete mode 100644 htdocs/zapier/README.md delete mode 100644 htdocs/zapier/admin/about.php delete mode 100644 htdocs/zapier/admin/setup.php delete mode 100644 htdocs/zapier/class/api_zapier.class.php delete mode 100644 htdocs/zapier/class/hook.class.php delete mode 100644 htdocs/zapier/lib/zapier.lib.php create mode 100644 installer/install_creorga.ps1 create mode 100644 installer/installlist.json create mode 100644 tmp.php delete mode 100644 tools/doap/README delete mode 100644 tools/doxygen/dolibarr-doxygen-build.pl delete mode 100644 tools/doxygen/dolibarr-doxygen-filter.pl delete mode 100644 tools/doxygen/dolibarr-doxygen-getversion.pl delete mode 100644 tools/doxygen/dolibarr-doxygen.doxyfile delete mode 100644 tools/doxygen/doxygen_footer.html delete mode 100644 tools/doxygen/doxygen_header.html delete mode 100644 tools/examples/zapier/.editorconfig delete mode 100644 tools/examples/zapier/.gitignore delete mode 100644 tools/examples/zapier/.travis.yml delete mode 100644 tools/examples/zapier/README.md delete mode 100644 tools/examples/zapier/action.json delete mode 100644 tools/examples/zapier/authentication.js delete mode 100644 tools/examples/zapier/creates/contact.js delete mode 100644 tools/examples/zapier/creates/member.js delete mode 100644 tools/examples/zapier/creates/thirdparty.js delete mode 100644 tools/examples/zapier/index.js delete mode 100644 tools/examples/zapier/package.json delete mode 100644 tools/examples/zapier/resources/resources.js delete mode 100644 tools/examples/zapier/searches/contact.js delete mode 100644 tools/examples/zapier/searches/member.js delete mode 100644 tools/examples/zapier/searches/thirdparty.js delete mode 100644 tools/examples/zapier/test/index.js delete mode 100644 tools/examples/zapier/triggers/action.js delete mode 100644 tools/examples/zapier/triggers/contact.js delete mode 100644 tools/examples/zapier/triggers/member.js delete mode 100644 tools/examples/zapier/triggers/order.js delete mode 100644 tools/examples/zapier/triggers/thirdparty.js delete mode 100644 tools/examples/zapier/triggers/ticket.js delete mode 100644 tools/examples/zapier/triggers/user.js delete mode 100644 tools/flatpack/org.flatpak.Dolibarr.json delete mode 100644 tools/patch/README delete mode 100644 tools/patch/buildpatch.sh diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index de9ce330..00000000 --- a/.gitattributes +++ /dev/null @@ -1,57 +0,0 @@ -# Set default behaviour, in case users don't have core.autocrlf set. -# More info: https://help.github.com/articles/dealing-with-line-endings -* text=auto - - -# Explicitly declare text files we want to always be normalized and converted -# to native line endings on checkout. -*.php text eol=lf -*.pl text eol=lf -*.sql text eol=lf -*.htm text eol=lf -*.html text eol=lf -*.js text eol=lf -*.json text eol=lf -*.css text eol=lf -*.lang text eol=lf -*.txt text eol=lf -*.md text eol=lf -*.pp text eol=lf -*.sh text eol=lf -*.yml text eol=lf -*.yaml text eol=lf -*.conf text eol=lf - -.bash_aliases text eol=lf - -# Denote all files that are truly binary and should not be modified. -*.bmp binary -*.frm binary -*.ico binary -*.jpeg binary -*.jpg binary -*.MYD binary -*.MYI binary -*.odf binary -*.odt binary -*.png binary - - -# Export ignores to generate clean production tarballs -/build export-ignore -/dev export-ignore -/doc export-ignore -/test export-ignore -.buildpath export-ignore -/build.xml export-ignore -.codeclimate.yml export-ignore -Dockerfile export-ignore -.dockerignore export-ignore -.editorconfig export-ignore -.gitattributes export-ignore -.gitignore export-ignore -.mailmap export-ignore -.scrutinizer.yml export-ignore -.settings export-ignore -.travis.yml export-ignore -.tx export-ignore diff --git a/.gitignore b/.gitignore index d0a99d96..a0867570 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,7 @@ dev/tmp/ dolibarr-18.0.0 OLD/ *.zip -pgdata/ \ No newline at end of file +pgdata/ +installer/*.msi +installer/*.zip +documentsdev/* diff --git a/.gitmessage b/.gitmessage deleted file mode 100644 index a5a71898..00000000 --- a/.gitmessage +++ /dev/null @@ -1,7 +0,0 @@ - -# ^=[ Subject: One line short summary ]=========^| -# ~ Subject template: [KEYWORD] [ISSUENUM] DESC ~| - -# ^=[ Blank: Follow the Subject with a blank line, do NOT remove ]====^| - -# ^=[ Details: Describe what changed and explain why it changed ]=====^| diff --git a/.vscode/sftp.json b/.vscode/sftp.json index e83b408d..2883d6ab 100644 --- a/.vscode/sftp.json +++ b/.vscode/sftp.json @@ -9,6 +9,7 @@ "host": "dksserver", "username": "dks", "privateKeyPath": ".vscode/id_rsa", - "remotePath": "/home/dks/dolibarr/htdocs/" + "remotePath": "/home/dks/dolibarr/htdocs/", + "connectTimeout": 40000 } ] diff --git a/AA-TODO's b/AA-TODO's new file mode 100644 index 00000000..0a40a992 --- /dev/null +++ b/AA-TODO's @@ -0,0 +1 @@ +MAIN_PDF_FORCE_FONT => Font to us in PDFS => FontName (from System) \ No newline at end of file diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index dccff0dd..00000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/dolibarr_*.pdf diff --git a/doc/images/README.md b/doc/images/README.md deleted file mode 100644 index e93c9f9c..00000000 --- a/doc/images/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# README (English) --------------------------------- - - -* Screen captures and icons are Dolibarr contributions - - -* Most logos were created by Dolibarr developers. You may find sources of them on: - -https://github.com/Dolibarr/foundation - - - -# LICENCE OF IMAGE RESOURCES --------------------------------- - -* All image resources (except dolihelp.ico and doliadmin.ico) in this directory are distributed under licence CC BY-SA - -List of icons from http://led24.de/iconset/ are: -- doliadmin.ico -- dolihelp.ico - -This is original README file for the package with this 2 images: -You can do whatever you want with these icons (use on web or in desktop applications) as long as you don’t pass them off as your own and remove this readme file. A credit statement and a link back to -http://led24.de/iconset/ or http://led24.de/ would be appreciated. diff --git a/doc/images/appicon_128.png b/doc/images/appicon_128.png deleted file mode 100644 index 4a93909a3ff5d850d8c4d0ee071a631328265eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1665 zcmaKte>~HPAIINgM!Uux3t5JeLg6la&(XKJkixJooZltCqE;aa`IsO55a-uol5}&Z zn>gl2AugdMzoXccLuza&Y<`V%kNf}rc)gylKVOgcAMe)iLcVCEzySgr z`868~xuBaLJzOAe5Uscn$DTDL|5FDIK>AON-deJbIX}0mu7b{A@Tjl)66rrFQxbs5 zZxD2tt(^fpo_->QSec{Od-x>1i1lN5Nu7m$$=?0D{%2+~|C~RO{(?!6Fmrb-W16o2 z;^-x>zmKbr-#Fy_!9?o~wMmIMI|ENLKKrYrww_|-=JhV%Yzg?~B>%M(+I~w}p@pFK zQv1a)>{*u$sg{I1$2fZwBGGm!JI5jqX6M}&ZhSF0eLN~A>ca99;UPz-mpJGlW(~0@ z;tvz=C2P}l1F~yvDze@+0#=4_?RPl;)3ej(qFEC@$C%2oQ-~RVD4gr_SUWV$9u3Ui zv|EzQ*!FmlYvptR5pu~H6rmB&YkfRBfkb6>bbLOgtAq&G^x=Gr<!fc>FKVdTX?1 zzOT0y63_TK8F=|SCsQvQA^~Uew3=Nnw}S7SZqT^`EmF`W6ztGwDKXz8>laZm|wE z#`3{gggZ?A5LYpAPo{GC!{m>X(}X*mK^frs88O1c=3|fdOCPApx{^S5FLIf=;9mB* zy<57O-v93Y7c5K_c^DfEz3R*4FYEGe>enp3aDMtxdh4{!oAo19i~u*$rcR#ld3teN zq_I1qvN+zdj1zi^7SFas0e46(#>nJg{cmMiS8^(3E9!!His8-uC^pkxewX%6OE<4T zV}n0Vr)SU=kVT~npAwIio%~>zK*2%%SXHW+KSU;yjZC`*L>$`g7zR__UG-S!m$)=tkt)i)6bdd%^xB6w&`fu6KtDuPF>hClrQ zhgm3gP2}T&**VGEVQ`O2M!*J3L(~opT38GJiSaO@W9?9q8%msYt^kwiE>z zX2eyJu!Wv`G0-STBkx>t_};u64GR~A0Ypm#|0fj+b0!DnY4BcsV>=js;XI&tLf)_C1JjVm%uz9QFr&D^ic`|E68xnPEWfZ-Nrb67`AlQnjc zj@eH1*>!uJz;Nr+%rG73@E}HBQjibkoco>~IF=@v@PgHGvSEE^>1(y}DBJF{DDqu9 z8KlEzs7!19D>_%|6A#xMT9Y12+6D{7#V&1a`?2uWL@BEut>GX8!q$%yL-^aKTk3S1 z3(ZmZZ&p5Rhcx?;=r@={MDRQyo#5UyDlMp1K&k^mV=`M(0;^+z714c{5SuL&p?ss+ zPkNn7*a|>k&Mb!<31Wo}`=I1@ss0Mx-u(Id*}K&3S8|fPnaSnF zhgRkkx~Lk^;i$auvsu#rul{8a{5}?UiZmh-T+Po3xHdSbQ_FfFI5-P%&g;b#}$ z$&ngE$?GFXx@u(UI}h0B60%WPvtSuv|7^RMKhlCKwF{y8G}%(_<%yy-#n%a8FJ&xhv?gWOd>(?;s-a41z%<)YOXHOmn;u8$#fcX5GQw*2SpJTXs z=>o&!hesJ+JbTLU>ctC&S1(^MyawWrAKo*3`uLII=g*%EzkmH=`2G7g!yh32`}a4) zzkmN2{{R1v%S)r;qaiRF0z`%YGhrYkEG#H2!Uk8UqNgXXr>7~$3ld>rVS(`V^wju) z90*@VSwl}xPXW%CU}2Zm)6?RB$xE=XZ~+yFBJnwZd=UhnTUJj`n-j)YSJu_jQIrC6 uLH2=wqPVyK3kxeNt16hQBq=V&1LU!?G6B8L2&DNST(B5Ug2-UPsSE&j4rnw0 diff --git a/doc/images/appicon_16.png b/doc/images/appicon_16.png deleted file mode 100644 index d5a9cda239acc82c3c60a515c18568486bd7ac1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfgaDrqR|U%`MG%Tsvx!o(0g^E~ z4nP#A7no_}l3*NDXcAXs=8K>Bm8I}{beQ(0U%!5X!JprM|Ni^;@Bjb*O6*PRfNrbxba4!kxSV_Dq|`wN0fvXmsy*HuGT+GJ z_{Mwh|J#-w65g`^ojZSf{d0_U$vU?)EaZ?}!&?(cw{x8{-!dq8PudpAdHm5i-PzHs z#;?~txW#!ONr87Ew+~Z>-UFfV4LW`Yp4rAS%dn-Xt@_ncd@npyG*q_Q{!^y&S62DI a2blFG1)ceS+)oEOgu&C*&t;ucLK6Umvz+b# diff --git a/doc/images/appicon_32.ico b/doc/images/appicon_32.ico deleted file mode 100644 index b0cba0f6af95fb2e270d955b116292e5df8dd3e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH{SxggA7=;gmOWpUnYgHT(+yytlVnuNmVbDYfmPBHT(FbcKfyzT;h>c16KofZY z4T&Zas4E7l56X+t6tQRkqef$*C^kmQ4${_p=TaQ0@mvXnS~>Ns*mWx#MI6PI#TxS%@?vmp+~Y%PpAI#@0qhRL8Oo*o4z zBdphwam8Z7RiYw`ne5FdzMPNig#{=nF2v&pYE(U>(%@cM3CgXdD8E^X`?t#Qq)La1 zJ62Q@+3w!PBU=T@SCXs^4tqWv)fT+4KP7sG+UIuE)>Pw_qXu;^9eC4FM^uluRIlst zPE-Rvet3_sjh~1n2H1Se%uQS368qk<&Yy3k zmMoG5b_L)Zw~+;=NdoMAah~HQGrlAc=Muy~ctCz|a6XouAL2K!WX=Z0XZZ10>P+3t z@E!@~*!Le$ZQl{kXp*qTpEE@I{s?}>>_PZ?p44bbfSvD~PokKYi#%AYRX)VlWt2~1 lXdvIWZS9olOL>021P70q%WBRzi1sM?L@6G^`+xmI`UM*J73}~3 diff --git a/doc/images/appicon_32.png b/doc/images/appicon_32.png deleted file mode 100644 index 7c7cd15c5314fa8ad91d37a91df7aad41155f425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 549 zcmV+=0^0qFP)?GyTNL5f^Kz$b9#w&dx>?y#(H{se1eXAf{%%gn2wa5 zj+CE|l%0>1o|BiMlgrSQ%+Q#erJSLusjRcBt+cDIw5+eSt+BVQvAD3ZxwpB$xVpf( zyTQoI&&kWr%gxcu&e6`$)6mk@)z{kA*V@+C+t%3I*4W(F*xcUV;pFD%<>u(-=jrL{ z>+9?7@9^>P@$&KU^6~QX^Z5Dn^!4@j_V@Sr`TF|%{QUj>{r>*`{{R2~|NqtG{civO z0NzPNK~y-)&Cq98!Y~wo;U*%Z$PmI%fdjJl6qG$>2`Z)k|F1xLTV_JP@_y>=ea^{A zga@63`vHy!6n=&u2GMv9%JQN0u;#P439<12?ST zNyv_`!S87NJyTDSs|+xppZ+G0B?I(fXn=UT20a*@0J2w(1LuNok70a<6LK; zHvlOSiJ&DCb4#Uk9|q+lYa$yWJ1Aw=2$R`BMWmG3Ayj5hx;@G4q4Karn1>WcZ5zp5;|W|PSE%|6ODn+&jsOA#~~uf z2a&;kST=hKRxTKe=n#LbR=Hq}+7)YcZirC^A|YxacE)=nF(wj8336qiFLouw zVRvFYj_sR{6Z->@tXE+F)eWj` zmyvqy3ev7$Mf#mIvVI$x>G$zCBOO_p8OY9hjGU)Wh_aCTEDJBPpAkJro~WGXc$u4n zH-$IwIxiOm`FSXOm5<`00-{1xls!a6c_!YMKSF8o8UHQ$9Gg$|HQBAYSh%!pjK3EE$T$o)uFz=-qNeloc{+W z(7w6;jT3NE(`xChR;e{1Gsh2Z>dqzzv|0ok-G;?JmM1vhn(}09jfbTP&bMj63&Ol1 zCKD1`oNsHw3oC3WV$wO^!IT$P4Ko3a7nXTpLDPJvKlT>{Uo!)I|IUs0xUP){8t`KR zXNBnE=+7bcsZH_S42!MCF5wf)o8r6E#W`#s!J1~Q^ZV&RvvyHzz>8+AbG|3bTsq#ti4fLPM1cS8w37 zAWUHxGn{V-3c~tj;Sno4GK?7ueC!N`Lg7D(Va%B4*NeD9F?~4Ws4>q+8gPZem13-$ z=fjP>jB-}A+)W?Tcokvf-6+PoSw6;ZnqeTofpOIQ$!}V_D9F*uYNS6I2ymtp@3s>g d)VR?jU|h0undBa4& diff --git a/doc/images/appicon_64.png b/doc/images/appicon_64.png deleted file mode 100644 index 90b2e52ff0697cfa49b0943a3540e82eee23933a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 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 udn^(ImjSe3RTfr3SAjB%r4W^0LZjDg&-d}M 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

*%$d=^R+SaEEr^dx%s)V1Pj!hTf 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 diff --git a/doc/images/doliadmin.ico b/doc/images/doliadmin.ico deleted file mode 100644 index 060a6065ae3e973259dba75ad1f0ef5d54d014b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmaKnF%E)25Jf)$W9b@+p`0KE<%XpvL1U{ip`q~*UciFF(u?dJth@@xz&{wZlD~QL zXJ=+NyFkEYjA4wB2f!LYP7D#E^(iGug0?-O>pFPv(LXO3hGFW+wj+iSsA=Tacb%H5vNiqfXBvHGkzj_zEx;$EDy!n=xboXH=}Sr37#r)&OU T0bG>>a3h-E&%mPs|Muernjj*9 diff --git a/doc/images/dolibarr_256x256_black.png b/doc/images/dolibarr_256x256_black.png deleted file mode 100644 index 1abe4e2c7d527dd99e9330842353cd34bee45441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 zcmeAS@N?(olHy`uVBq!ia0vp^H6YBv3?%0qQ0ZY{U@{Ew32_B-N5NdfOV7;8%`Ye_E-5RosI024sjaJTXlib0ZENr7?CI_6 zpD=OK(+1BxM|DQZQFP3+`VW2frEz*pE!By^qI5g z&R@8A>B`mXH*Vg#efQq|2M-@TdHU@6ibgGV_H89%a^bFf1>tkvkz4cYS@k1MQ{`zivD zcRa3*cazCxmMqMwk*6}<|f0gBw1MV^k|2E&F%m8cH5>2 z9=~qoCiA`E(cUUInPQ7VcLU|VN~H?lV~1pnW`0^f{rc@=caHu3%ktq){k;Drr+Xqr zWAk3VlzUvhVUQXot5TP}14FkKjp#2J_^UC)hi#&*4q1(%4lh9`^7BwuF_TuS@f6i$_6&YFXi2;eX#TR2|3jYq@?xvIQq6eAgC?FN$8m z)jhpyeWu{X-K9c>&i_^f{Ebvv|L=D&1sclsV#zSERT zJfl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - D - - diff --git a/doc/images/dolibarr_256x256_color.png b/doc/images/dolibarr_256x256_color.png deleted file mode 100644 index b2d567d68312cc724dd2dac057225528b8446ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 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 diff --git a/doc/images/dolibarr_256x256_color.svg b/doc/images/dolibarr_256x256_color.svg deleted file mode 100644 index 5115a8f7..00000000 --- a/doc/images/dolibarr_256x256_color.svg +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/doc/images/dolibarr_256x256_white.jpg b/doc/images/dolibarr_256x256_white.jpg deleted file mode 100644 index e5c4e260ba78a261d669594bf129caa758a551f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2601 zcmbtVdpwj`A3x7C^9*B#o*9F2%M9bv^4Z*lV({9qE)A{sv)fCdh)V93v@hCEcuVVk z??qC|YSX&2Q7*|=luJTXa$C~njV{7_o^e_K>>qvhH|II?yPWg={eI{9o!_(Ezx)K? zc3;_k1rP)QjqnGS2Z0qJp(rsRk>S8ZF^o*c#6(0WqI5AjohC-3iAykXaS4V5jfP9( z3`v%hloWlF3|pGTX0oJM1PDTcd&n3S!>BBAnmFsTY568#h#~+1B!mG_20~&W%Pl~G z2z79L4wZ)g7G8h@&KTd5P;$&8~|h)?2g{B;`3Pw+|sqSErnq8 ziyTBc-ihR=tC~goPbYQ0fh}HIX09Wq40MmSS&mo zz#@fpzFsg0U~o_pSsUXsC2?*5O9$4CD6}FNy2zdhdDZd!i09=GrL8V^MriWs)lt)? zkAor_JC82LN#-5uihVU2(7;QcWiSF4{x5i#ADYSulNHg>Pq#PL`V-FUFm|EbyN zVd|yIa9;JBwB2V8qTipdRv+VIY^CA#V zC3P*FJpxs9^ehFQ0WnF1<*P4;Vvf$af7e;3B6c~xLGzfk>*U~1u0fZ>66bs@$Csw= zJ_yjgcEwP3d}?P-JIVj3y|KYrZjaN@P~tPqUBgCROsR1dv5e=+AvH41hcSVw65a>{ z(Gb=KLPAB>B7wD`!{PD;+7^K^c)%`?k!=Hk6{EgO zSjbD8t$*yxUT_NWne@?kQF?=h^kd<9HO}!PdJgAonO~>&B`Ba1f}d+oYu{?Uq~B#j z8?*QFvYm~!$F&X8H7TR-n$j-r%2^|`B{HEk$$i)L~UsvpcG1_sCFsK!P{hKtTM z-`#myqykS=dSKLcRLc2+bX2#CfNRT@=}zzl_*6Tn6T@Dy9#-x%Z+ zTMly-fjCwsl^1y%0Apr;0t+Up`OZvZBqyfTMZ93 zI+SoBdIbGf{)$6ulgnQWZ}sG0C{8s51>=w;I9O* zCax$ya~9q?*pG-0GZBiA;OCL6!{HZN2t1Mll2)z-amDcu?%kP{>Y&hDE}YcxLqTzF zol;zVepq$c7wQ*gRmL8O#m0(0-oBvUa9XLpf+;6>Qp&cwM!hiJoTH5&w-mON%?zUZ z!H?>iGXTADxUioHHr#G}VXx`VO0#dW^d1?y?V%`oi=U(Ro!@h%G4yKD#4o!e3l#MW zt4_B{IWMiCYT#=*AgjFt(Sdz~t1Ynb2u$Y36b9hsH|{@Ozg_r}+OCY=fn!&?ABX*S zy5gPN#kvNC`pEjbtKDZEB zbiHb_@#XQFY^(V83q5|`Gp6Obai%88xwS(HX~wxH4+TqVgz10j5&=b1iPE&;aODFM z{-aq#EgcH8Rh&Eh^2xe!EZa)=uC6=%MxF=64Q|$3f4{}CUeEvB0r9V^{?m$`k}uai zSv>gb?8|?2$YuIjnZAZ%zjdMY@c&*Z!!>DKzGH>-PqBKxs77escDH-uETe(tRA-cp Rl|~$t$SlB>T1S>2{U5|v8Fl~w diff --git a/doc/images/dolibarr_256x256_white.png b/doc/images/dolibarr_256x256_white.png deleted file mode 100644 index 1f5f7454f2bda25a90973e39b9de4bbab53b3885..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3254 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 JR$TD7_dj2Rw;BKd diff --git a/doc/images/dolibarr_256x256_white.svg b/doc/images/dolibarr_256x256_white.svg deleted file mode 100644 index 79a8c9d1..00000000 --- a/doc/images/dolibarr_256x256_white.svg +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - diff --git a/doc/images/dolibarr_512x512_color.png b/doc/images/dolibarr_512x512_color.png deleted file mode 100644 index 71c2b0cc0609d7e824c445cd4f13fdb0811a5cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8533 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 diff --git a/doc/images/dolibarr_favicon.ico b/doc/images/dolibarr_favicon.ico deleted file mode 100644 index b0cba0f6af95fb2e270d955b116292e5df8dd3e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH{SxggA7=;gmOWpUnYgHT(+yytlVnuNmVbDYfmPBHT(FbcKfyzT;h>c16KofZY z4T&Zas4E7l56X+t6tQRkqef$*C^kmQ4${_p=TaQ0@mvXnS~>Ns*mWx#MI6PI#TxS%@?vmp+~Y%PpAI#@0qhRL8Oo*o4z zBdphwam8Z7RiYw`ne5FdzMPNig#{=nF2v&pYE(U>(%@cM3CgXdD8E^X`?t#Qq)La1 zJ62Q@+3w!PBU=T@SCXs^4tqWv)fT+4KP7sG+UIuE)>Pw_qXu;^9eC4FM^uluRIlst zPE-Rvet3_sjh~1n2H1Se%uQS368qk<&Yy3k zmMoG5b_L)Zw~+;=NdoMAah~HQGrlAc=Muy~ctCz|a6XouAL2K!WX=Z0XZZ10>P+3t z@E!@~*!Le$ZQl{kXp*qTpEE@I{s?}>>_PZ?p44bbfSvD~PokKYi#%AYRX)VlWt2~1 lXdvIWZS9olOL>021P70q%WBRzi1sM?L@6G^`+xmI`UM*J73}~3 diff --git a/doc/images/dolibarr_logo.jpg b/doc/images/dolibarr_logo.jpg deleted file mode 100644 index a4a0611067d1c58945f76c097b0b3e4bd3311426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18776 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 C&ZV0G diff --git a/doc/images/dolibarr_logo.png b/doc/images/dolibarr_logo.png deleted file mode 100644 index 63bd8ac3392507e70b68783715b79d070a24de49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10312 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

3AECbgJ2mg3 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 diff --git a/doc/images/dolibarr_logo.svg b/doc/images/dolibarr_logo.svg deleted file mode 100644 index 9c9259d0..00000000 --- a/doc/images/dolibarr_logo.svg +++ /dev/null @@ -1,209 +0,0 @@ - - - - - Logo Dolibarr ERP-CRM - - - - - - - - - - - - - - - image/svg+xml - - Logo Dolibarr ERP-CRM - - - - Laurent Destailleur - - - - - Laurent Destailleur - - - - - - - - - - - - - - - - - - - - - - - - - - - ERP/CRM - - - diff --git a/doc/images/dolibarr_screenshot10_1920x1080.jpg b/doc/images/dolibarr_screenshot10_1920x1080.jpg deleted file mode 100644 index 619747589f4f04ff255de1f222249b3cdb07e6dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311204 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ᖓZ}c(lVvn(ArR^=as-qo?a?|_M231ob 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 ^I1&%p__Dri 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 z%0D0|@i~b2~@6>(F*(fnrQQ;$x>bAXn7>KUz-|g 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 diff --git a/doc/images/dolibarr_screenshot12_1920x1080.jpg b/doc/images/dolibarr_screenshot12_1920x1080.jpg deleted file mode 100644 index c063cca6726c26cfb943c9ddc70b9b8ae1c16ffa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216262 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 EUt_gtJOBUy diff --git a/doc/images/dolibarr_screenshot1_1280x800.jpg b/doc/images/dolibarr_screenshot1_1280x800.jpg deleted file mode 100644 index ac238d39c1f8d5e022217ad3a690ccee819cd100..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140952 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

    TMpr=C4~b=d24m0EtS+K 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 diff --git a/doc/images/dolibarr_screenshot1_1920x1080.jpg b/doc/images/dolibarr_screenshot1_1920x1080.jpg deleted file mode 100644 index 19a80907f4b0b99d4bf767a8f74b38fb2eaf15ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278100 zcmeEu1yo#3(&%78f&`KP!GjYB1PHDPfx$Jn1$PMU5`*9t+!EYff|KCxZb1hpc<^@z zh<&pA@1A}8pYzV^o^z*e_wDMw)zwwiRXuY)a{dK$LsUpa2m}KI0>J*&{!kG&@pb@z`TKiiggp~#!Ude z0Yw4>Z3zdD1T?&H9r-#?`Y)#Q&mc@Bcy>e&I2ck8EG7&bCd_#QhyWNQEF27Uyx$WX zJi;|ZSQsRr77wVnNZ;##w}OS%pO1l1;eeJm;BEj#i#n69Y{MTa*4_dgYZ5x8GSK09 zfGoyq)M$!VhTeF9>`r|#I_I7NPY$9htR7*TSFiwZC7zgTPs()=vB_NJS3l_iR}flR z{^FUX!E+T45C~Cd<&K+?7g0f)+8n_5p>ttQ z8icr{bh5k5J^Hu~#L4!geJ6|2tC$Yv;Qhwvb1%6CA3P7V(oT^!Y9@y@JdWQwW z&)d72-ou#}$=JJ5`9B4Q3pxV*n&6gz5*IOp=B32tiRQsNV89^Yb=_+ES=VVh^J?R3 zAG^FNuF>gNWl zzKX9;#YFy(pKYLWi{C+hEw3)w+5xYTR;{iIAIMgG~ zJ_j-ADD~L1fb29f4(0B8NA#umtg%G&tPni1Y(ZliZ`!0(#R=sb6eF1iZ$W{ampXoaBD*nK@il zCrqWnNY6fmG>skaY@{BqN=M+Zu;$&3_r*kuy6;XFpz0j%Wz`uUz}%WYkOaYDUWHjK zB@n+cNa(8`-I-ciYsDHXfg$rQORTMEtTT%_Xr}7UIS7{{f-ytSl3%%G-lo#KSYe2y zX%@d-Zzzq`=jiOo$k&2_#*q@|r!03nXYMN)n~F27+2((x9M!~t*U#UUF1 zXLAm6m{RacaBdPCf~7OjI}pIsuRqY-Ek6~w8(4TYoTA$?KenK3{c$?X?@jFeIPs21 zm8fEGHnt8*ti}6zPZjjdjr;CsMv6~Vd>k;1o>)A^j-ph~k=?_8+&NAh7|3?l7e^)4RZhM5BR@V3Oly;v)g=#w_W$_dC{w-m zdRpke^LcaNf`|YA+UEvp&-dxU2&WwZxol-eB{-m5+gqvrecrx5^>2QY1+&dteBi;)l3&5&w?4mTKi~iMQRoG~keT^(yfK#1t8R zZl8Qhl>x2brPtg8gWwEXQJ0%fn~k#iM*wO5f?U2gV=%R?bs#^8_-_pp{-)2LI{0&! zD64SI`LM7VMmh6-p~!0;4~9^E5e!@3$3pwedfEoJ;Isd4b^i|lf(nE;u8Y$DcTNwm+X*@b6ssc-9YbJlP9fi>jJZ6wB$%I6TwX?_A(f%D;7i zL#FykrBB;zpa&*a;yak&W?hNv!mG8m>_XNbzv#^#IF~+XH0SQ-s#@QmfqXfxGchQz+EXy$IRso2ZaWB~A7^KoPpVm3&K=kR|YJgVu0j+YCGh?N(itJLfh5?&} zn_HU;gN51iwKDO&f_?6bH$b@aAu<_QB&*#?RIQv-8EIUf5Aw>NZ zrrrJi*6b{DU8)#<$U{lju}npRv}u<#v{t)Q`pGVH%Q?9ej{Uf;Q}xz5t0}j*51+XV ziu?<9*`aTRz$I@+OlHLXm-hdw%?RKLxY)NzzZ(O(M zi`60CR;?}8WS@qH3H{@#1*4uRd1dhIfyXjZDU3IoMJQ!kw8@v*#N*ws7t zG~*7o9h~;2iPgTHDt27pxuQO7`OZ$Qa?mHni>KBRR)~ zJDuzFWyyOkyyj5`MlHm#ToNOEEV~>JCnXk_yDQBZX!cLEHow67uTXSo$YHy}h40ZD zKoZy{#qNi9@yLfX&HG!6uQJ+p-#Z>skzYI&Bko%IczQe(+t)4e$pypw6*!gK)uGnC zah<436Fj!%0SxzQu5Pa}yR%qSYxQ%B#hn#c*T$LKPI^wa@bPJuB(&W+2dO7*$MR(d zAJV4ozj+Tdb1BfM%h4|gL@-k|P3ey>XSM52;uKmim*Sl|afVctmKUrd#KfLO^;XZ8 zyn3(P`;fWz)6 z;|pD0nA}vD=HWgKET09i!us`e$RhgK_a>{1t1aL+i|#=Nb@$?;3}_AqC)M(_COVdJ zJ6F--o*mKC(gx{!Kt}?io=Q|}TwpZlVJ|bFEslxP!I?;oQ>T1=kvGL<%^v_H$d}8%TuwH>H&*i#wFq&wH(cQ zTs#AvPahetohV#=U9G5KPkkZ$AvHO*Tf+z}pCq3D9nhV0ClpuznbznFFa2wTk+{xm zjsNIz0FzABk!(ifH|;x?Z}pn)M&Np?>F9r?$we`F8T}>o?*I%dKdIP{4NP-4+WiFR z8Huev|AU7ws*Xx_5B=I)7*T(=!nXLwokV|0a@++W@w$SMHWrMX?A5`n4SRdB7&Ryt z1iBDeG$vtgjzsa`wBY4=r#<4tZ4DVhkq&xA0jt%FUV@$3-6x6Uf6CNry$sUTzC7H4 zQe^!tyW2b}X+dZ@2!xoeOkfeKEcw1MNQ82br#H7|3%L#o7Ee4Bti{iV4>f<@I@|%Qs(H zAP8Q_UD_IooyM|-uqNB;2foQoUhJWgwswL@TdOa%P|%4y`H=-pZr=xV0cH!C@Ly%_ zBdG0mdrgrB^yp@OId%R+r=6wNZQk-+`WJJqMOD_OrQ-oPoZX5&J5KnK;50caSBn{E zuDKn39WTlKlf5IHCCB=u=fD)f2<>5QFwppdZexw5(vBRpq1Mw_8d+|m+Q&i}F_+mZ67Aiku8fy%W57cnI!)wsb zg3^~|(9Xn{l{HwUzbm$vJ5H@Z?oq43x!wh;>lighAv) z$m@Oz|5m*4H+@O{{LTBKG~HW-It=u$GR+2T?>TpF*M_c)M;g1)S4wWC+Xm(=U?@I- zVo5X30gRhh-RT7mM4N{=<+jbvdmV>vY)5ijhp>a)D_q186&m?MUIVhHC{X#hYqp?5M4MhQ7p}T|{n=u*5V~T- zqXFIVK+TnRZir=pI>)~4{X5Oe6K(>N4ZLOV0CWiW17aVmQt4nikHEKvyGH=eLiNg4 zJF2U`0CCWR3jIA|Bfo|Xji~-FQ#xh%FD7R@>sQC~stpuES!lG@2wVIf%y|)sBc%Z~QIrT&6E1q%g zVV=lJl>p)t*9SKtU++}xbuPs&qDL3O&1vZ3o^m6 zhTdMJL+$Dp8jV&#xN80M${5PegIkt2*we9twm@1T4kzjn(}*{ zikDsLI0_2>a*2$Nl2RYa;??sG@US~OE5iBw7g@{vB6zl3HU@Wg&ZcOKcL|z#^bnV8 zo?qxXLEMzLk2t7TxaQIb^jb$&ZYtyqlv$J0MWG36=djPs+Aw#dd9a*$Q050QlbT~UKq!;ii z0F0r)XO~?A*DJyy&0{A2RVKRF_@eC7zViTqcpP_i>wdNbjI9a4*a8Zea8F)P|EPej zv_wDI2B1KtOm^gF`7M1LY4tK>DY=4%-bXC)Zvf|#U7c+>tc%CRp)GH-Y>C*&s^5wbr0D${ zAh#y$o?Z=Z>Qn6~86Q0%nlRkuf6&8amG8hS9LPP!i!Ok{DNelq$K#^+kySo&Y1Z|m z2*(Xq(pJ{;*7Kxvp7r^fSVf(OLi_n|fXO2eEG*L#?Z3+41Tf&#K+?~ZJ^bqGLad26 z{OMpgP;a-2e1qOHSARe4=F(VK$09NM`^DSn#WRQEtGO($We(o=jDJ<-)HyN?I#%rY zfS$36=jZ6Ejv1Z6=gHnHL&;&8j+L?+VoT0Q4|)5C>=T};a!)aw1Yp3%w?_K&6WXOk z69m{>;{=)=)frv8KAYxbrfcRnjN@T>%6lf# zy2S+{^Bh21w9<1BMP9pR26)-+IrKGQgbej*KrXx`Mu!&KgwOXNy`d1-n<7PW9c$J` zAIxjqD2Mvz%S=r;PSOlxM((_awt;HgFHqpu1po8qO0;_5icj+LaHPa2o`X2{_OlF@ z&uFIuoub4gRi6%cQF(XTMAs;k8pyu6ADyez%^|v|7-hCUEKyKCn-yl^%$; z_hk#OwUbTnQ|_%jj6RpIS6eBh6i>c~%Aac(dPdv@+$>JfHg@L0W!=V;V)|M3oD+-Y zk^L%xM*5ajWs<6gtIo?(-m5450(-QdCio5s+Aokm5q(cLz5^G648i$! z8%V2&-l;#vw{={zH2YO<6VJLqHd8!0kL(mf(U%*>sOoYIw_w$ zW)M()-`o@V(N*q4BNan=^>|k;hfQ^RbKU;earMOM`{Tq(hbvH@fupz*T(Iphk7d`3 zf+B&^JE(5_P-EpPT`?h%D>@soq2tk3z$Y$8^p7RxDZsM-o-Vfc0$olz;oowdQ`vXx z47#Oo@_0*_o_&Af!V>-ZrL=|FwypB3LZ0H^?F9BPzaB^0~N zG3rJ-e!yPIvc2!|z4(ghFN8$v&r+!ARrlkWE8uro0M}gLzw-{aR9buVk+0r0h7EBU zja!OuZqEoh{0(sDJ_2nLZmXXTC8J+t6O+yzimktW_6kj|>+Q_>CdN?QCUKoRjDEUJ zT$6u~|FR9H(>`M@lg`h6wEsrp|4;^<&;IzPz$W*5`oH0Z_4tk)1oazoAAOaTQ??XW zlf${y*vR-_0d#Y83Ll^Z2&1%_(9`((XwOD|O#QC_eknd|DSu$(t<6tw<|lPT2XgWt zr(&yj6*;U^m8x~{hpgQS;~d*xwXJNAjAZIF+pN85ix!Y#yQUN$mA*bn^6Up0{|F$> z6L@|2RKU=Q=sxUirBRc{+EVCSscSiki!3b#lR8H~gX$|8-EpS#B+Wo%FGWy)Q1YyR zrA)^*D>z{BM zG+p1oydM`0xiMvJXY?&lD5og_JA$pGy>2I_`B}5k5qb4iyCu`U*PRar#$JID`4fX2 zEB1IUJ~eFPcQe{Kt=HMR?k8weP+Sa)nD>zTTm1quF}S&ROG(+4_yX8frEY5#UjLRG&a^hUD>3FFrA(n{mhRCJuhSu> z!GNsCFQ+D;J8I|kae+o{xb9GJtW`m8?BlmxGYunF#ouWL|GrcDBvrMl|)q4^uh zF9@oD(|&m(Ri{Wvt>;>r*K{-2UX2UK=43sop}f-*L?BYY>+!TwbothK;9iR0sHq zFCL;T_I8$XFBNUm7>j&~2mL{wK;HxNrSQC85N0dEYb!8GfN(2W2opb;+zKdo$w9_5 zw0GEDtJxcRX1b}bITUK|bw6P!q5`P&fVKs}-tlBLd70fOL>};%gDfaOcpkI$4!M<( z2tjZNm|WKbC?I1&Q%{v@k7FL3&OID9{C0925y#A`mmI)5tU$6V`P4+uXnG|B+sPIs;0(i@o&i^1)RY`kovY;c|)S%3#- zlIvZEoyqlR5Gm2vyUoLQY#iBdI>QnegBPOVnv+C@C-B)97eZ@514O9u3^z-6*9}g??B^LC% zPKS;i4bkn!VGvmXt}ty&P#)=H_BA2kX0UWhXFLVH=+J(T%`I$RWOk>S@NG*my07Qb zz=1IHHTu24s*&-jv*7PE1cAsx7|CsYnXDuehV94$B$WWl1z(b}(OD67@1Sz@qnE|o z`2Z;fq^&zndtIe;Z@RjfblslotSNtU2;sOOB*2fMFp*7@_epNP$Mt7ONou5fB}W|L zA^C!C30Bw?3rzJ&W8`@`lMSp59R4-E3|=yl2&u_0%AD6smk@pBbBHn~vbA@V{9bUv zaKfPT(GBEfZivRLp(^(v_aJQymNIgfT5g|l_Cl)z^CFEE>r7{DP)B=^Pa3}-T2;U5 zLge#gk{#Ta^pMJ0Ba7XY5@Y*?+q;gg}r{jWS#7#48jfE5e{h(&bsI99vU1Nmshe`x@18JOJn zh;g6KHc;3#{yU-zjGJrjBBzZs+Z@!PNk_josx3IBbJ|+_3nqk(dWQ9VrG;?7UoJgs zqPPy{y#?Y7_xoqbyZgW@JUn}HSp|E!OaY2t(hLLwlj{INX64M}l=d)hH?419Pd7j+ zV)iE!);mX_?;RYBe+)DSnsLYeI$PSp^A~s!6EslKbuc0+;N-`O6FVmrmkS?ZlTX|o zEYxpx)*Jzmgwr4=g)qb9n~Wm?kCb3Ft|@R=C-gsK9!2G`b_U(fd0On8VICFGsb$TN zCScL)|Eeh?nkmP5CZQz7pfeUEUw$bJ!&chWs^yS_n3%pKF`qqLf7>eGAj=jVIhI;a zRQUwhpN__mmPpRmKDe`n92rg{6jN?^tyci%PHAU`si3oxx5&1NkV~gtadpolZup`{ z?0;dv;<d{^ViYs(Qour_1Ikr&hE@H@BnC!dZ2`^T!hdEG-USNzrT z2MBvfQcSGk38P-JLDtYADhi*$lbIu_9fPHFP|{jQtAVB7qFkZWQ z(TH8;QwxKou}@`-G+Z4?$|YwYaPf6f-rDa#Lc)V~+F-W8QYY;&AL7WmT7LG)*d|AY$}gY~a*t_Ax^s@}{xtlW)Q-0b56kA{VC@EUkuiUmMU zP+@Ek@C{E-o6V}1LOHPtxS*@XEaGeS?c08w4_y2R9oR@NjkEGgtXXg5oR9oUUUHXl4)|4*Mz6&hD_|uz}NI^WC>7 z2x7$>nDA{0kBb)ZEq)}F3%G|9d_Yse)0JgN~?C5PRQhpJ?N`S@>bpwo;}8K?=B z**hJ6+3^Ay2vd24I8gnS9L24E3xynBRtW#%0a%nG`VzS&+*A81eee_0_o~(!C+?mW2b$ADS~{P0(!!SP zOQ0;{EJ1f?=`W-onzI(5g83NSQcg;Cd0Z7!tu^8xa~eK8^ zCSYVlB(acm%4Qc>a7RBvdtdYrG+qj`{m$bP3Wwm1J4t>lb5Xx+=4`+fbq8F_1 zo-XjHh83*c2t)65tUK71SYH89dhz#}Z@(Sp z4b02@ihd5NtFYK(Sj6Z*2SqyS6dO6GM#$RL(2RYv2K3|hSKz|OyUtnKzvtS&*0tRsHZ@`ieyhV@&^N@T0VKP+s|~n{M|QPo-wg`+@|lV zaBWy9Adgtmq@LN=%Il2AE6aKJY(v)*1uf{=3FOW7nyMhRwC6i7x}S+RUf+&Ph_cK+ z89l>|-0q9y7cG`a zxg2ONZ_>(jbE+Q$k{!e1iv_lCr?P_V{{8RIc+Dj5F4{S@+#RP`qUhk!7`B+ zUDGMIfr}NdUc`=8tN$~p*kYup|u159+nuZEN-Ii9SP zp_PbiOKIOdE7$OuvXxCLZy2ejTNCDwL?U(i=dO53un3sYMBt*9Yb9UO$ee8>91 z;CnW>XhOP+uHm}#JmF}`$(P`N$%vy#v3mqH63$$+&>h3i3}Z~wC>D=Osm<_v1KxOZ zFmv*7U7jU6e(93W+3%$uS4eS@kyjEc`5n)nlbS)H)FV#l%1_KRrS}ivAY(?vX&% z@EvHrTQZ197LnyotG>(@ps1NE!_gg(%kHILND{&UwZt_?Y}a4IWSAwz&2fI5@7v|} z?sT!~0o^u}FLq9|y0F8+Y_HM+z^kbm9FlxRXc%aNVB&<7DGrJF=!ZE2ziq4$IX>Aj zHk_m=3Gr|4EdgLY}oveqIH)rI6wC$%hSKCKz*)~0}$Y03gk?TMnKi&iC z+Wm3!PXM^)+G~i6UL9B-@UpWlF00O>!`(aa{=+cs{Ex`3Zi316Yx7sfkwCZbHeT&k z#l0fTx9-Ns+*ohptl1`D{mtzHB6?o#O35a{%#&#sN4T>|Lj9`<2Elcu?1)EXt{mGx z*aRrI1nh8x>E%8;)E3Rb^(qCG30aDjsSp74~KV)l4 zH>bLKwq^Thiuo{wD-pznk2v>@i3`gi{fDwpjoN`3Q%1hN@@@j2zKmT*E*BXLHDCru zqBi0qlt7nL!zAuF_8Ynqy>R)EQ3aypm#ySh4lL_lm=1;6bXlktep#uea}etxIK%9L z!tBn%Y+jWd!#&9b>)X+dYIIrG?|oJ`c?QlAFf$jU&{vT6)l*%bT~`IRkMA9717o2$ zkhu>9{dIUJE?UzadbpNpe1gCwG~%RWEJ5p0WORcS8;2Ic^v%Mw^fCC5AwJT7kN{A_ zo!7PxFV=~^17N=#7IwSiLS2g41TKV@`55yF_G-z+T&j>&v0t27f99G#Hh10#2+xw6 zIJWF4hy0nJsw07&5Uez4Yw@>Z*jO^ewI6nt0_T4}N|w}|_W{!L=hA$~-S3CJzJGHc zAqHyy8onk^WGKW);Q!NWo#A>4+CdoQ&m*H_3vJDVP6&IVKV37@K-7Wj;<2`ygPaX&h` z03hT3=b$QQ!@+%GHLlf|Nio8YTWXr}NqbdM^km~JdYQV+&U~ynFQ=+HttWFA1(ds5 z3F0+8en;}RcQ8L|px$Gb8$%Z>8xA-=%Z`hhe`j>jyV495zD_hP}#|r zs7w|F1OFA*lkZMOK{W=0K>N_c79Qw#&-UI6=0NE8F84*ne+n2R9e*^@ZlNUiU{APo zph&;o&42C1vmca!+9enXPZ;nbG@M`Iyonx<7T+r?sMt4OZ2Bspvuhk*z*b&@?_Iz` z>^U{C-M0|!)cGkxkJ*~uwL)-E{7L1_n9ar%9`UK$T1?2VY5t8&C$4s+KY|v%i0v)b z8xS;X+pv@))uiey**+d^bojKZ#TqJkA(6cA*oTN~=IrBn1a`4B;KJ6);+Nva*iQ}y z4w};Nn(g&%KhJDR7zj-NvMhhR<#zz?(e(Q`6T{PMaQKQkU#-W-1w(0^{zMOu^sIV) zz|Ly9!eA^9N39ZN44=PQoGo#8OsGo*ajp%day)|1c#&H>+(u0yzOn7Jp^RxfjYWGk zjP`c*q;g$#&`-sZdpC6@Fgn!ZY`LI#+(XPQ{{PUy%k5;x7 zs+6s>gVm{ORRCLsIl8&JK{AV@TW5&~RsbgqYCTFP-RB|!lulIIhYzxQ{ujZ=VSUmh z-zg7*G8){B-^u9Fi`o4%O}F=sJnj+G>4*ylD=>$yM;>lK5%J#_xSMU5SCuFX9Jw>g zn+g2kbH`2#<=@PxwNI8VJ)FQu(J}fMr@C*k;$j!$Fww};)x_Zokr^lIWVIW}$xm5E zEw#V-@jf6BV+9c;S8Us52!?)+q9}tN(Xvjk)zI|LP{~H4EA`N5P0;~zRJKFeEl7o< zinUVa0j;r(W-V{aWdx7^2PUWq2)Li`W?|rLHdmhZ?AaZYy@uFwwoCUrZsr*e^HJ_C z9E)VEew>!HB>ZF#xf=kix=ydhmeZASZ`wAkriI+>I~MH@u!p*Pa|Pk6gBwnpjVz6^ z?LFTA=;K!amCyih!YM{T`T$=Cks~sMgP9+whFfHy$-%MatZ5L>yGvU2+GiV!%r8HH z=`-Wy4Q-1saKqk?)Bx1bo>E<6gbkYz5z`)EefjyHwYX@0#{=5z;sOOOg8sa&-(>67 zZ0sYGkHYB`44>sqDP|KHSs!!{u>_Pc<*$9N0n@Ufc9c9Q$EO}NH5D((taP+hw@*bg z=lOtl%2S~KD3Jb9;GJvSy0}|GI!*r}P{oI&MW@jh_t3ZS%0U1P;y|Nje+r{r7PPq> zTc0ei?;fC~1?&-VZyXIX5pd|On^a5Z*l#w zxzfqmVD8h@S4S&lLNYVDt3VR}6`spY1C(O|{$T0+`t!5@42+YfGjQo9MD!ycYd9fBYdwrS8Su2ig&d8A=49&%YonWE$FRq{WTJF z5kCC2AgHsOt=%cY%jT?#RkLC`kFQAkFb5(+e(9ht2_I2_nk(U z6OJ=Y7h)w7+!YPV6>+-84|5%tS(h#EWCZX{yED7_jcXiOJn5={FWDt9c^;!QW_w@f zo>t1p{bhH~IoF2%&)>LgM#>eEyO%m}FguMVO@ITlT+>|`{+fNazuk{=TFAu=Dc`WG z<+CAJHOm4*>)rN;hl32uXkutxYo~O1+A#b-1_weAbFx5N+skO~R!C}?UZ{=`7%vYT z*jZ$CWilT*3|n+G|2Q?{89_L|xm;?~xnScOEz#lV1Z@ukxn__wv`;n=HjkwkB%<+H z_#%!Vba8VLJIL}JY_TGmn=1>9-Z(Vi{fHWu;Bu^OH3k3WvVZNuB>553CNSyaiz&ek zXwV`7LYGzEDBI*@7xA$G_g?&k&lPs9n|Wx)Lpsw5qj`&T4%`x#o=W~pG{E&@XPVXF z1V;L%F%ko*$Lsm65uO z*NPebSBFXeS(ylJo6^N_Ts|9I!>7GkK0gDAKiNm%@r-M~r)!}5D$;!5+&6M~EAU-h z@~c-tn)eg=yH)#pH2lgJ_$O-^Ni-#``#pdzUDd>y;sx~;;=lPKy7DaFve3HDR^l4D zN8t#6F`t)lAxt0?bTOX-;2GCuuTyvTm2bT#fe5d)C>&w=lD}MHm96yQnHns8tW4WN zo_CkrupKjrjtm)kLlRQ;Iyi|=Xojc4K8?(DRv+6z;#|Kko!o?+Nre||f5jKMn3ue&` zRpT_JO67yB-*z~L8GM-wH#uK(i5H%JIR~ZeadArjayk$Mr_e3Jz>ABgyb`q#kX3x* zeP|)o?979QeX!Cw%zjWkSN6cc+?T&M*Q|6GQmNkYI%u^c)TWj$#Njf!Q#tf9+#ovtEfFR2n7@* z#MBC(SsXaoYm~J*4buT9NE|;llUrRZE)OUIe(2>QT^ck#S&uV&GK=r!p!}Br&u7ry z;hJuAgI{(fL?3OEttOc4a8(7jZn*>Jby|RU!_Sj2cYy-KSiX+tattw)=(LOjp$sa!&I)&1K2I)u#M7gz`h} zq9J-JqKkZ6%e<4#RB9!?dkq6vTxS@p4zcy)ao{vs_~SGgNz(F0|bN;TYj7Y zB0rfs;@SzU?6261ml$%?27-{CO&61X75x9hYXGq<5edEj&hbp&ech)QCqXZdX#&K9 z&91O4l}I&1gyfbe8XRfjGgH=DLrz^@N4^zbv$gciZd7*jpx<$Sq6&4O)h>=>q1UqKZ5jI@ z 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

    DADVRxtfVDS_k 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Ę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 BA`}1s diff --git a/doc/images/dolibarr_screenshot5_1920x1080.jpg b/doc/images/dolibarr_screenshot5_1920x1080.jpg deleted file mode 100644 index 8f14c3497c8d05dff450a64d541f7e47e353cf93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271776 zcmb6AcT^K^&^`_?O=&71Dn)71MOr{45W4gZB0(wABA}v%8X%w|pwfFwLN5|Qh=?dn zQIL{E2t@@!MF=4xLI6o9{+7@4obPkqKi?so<*>=-zGr8ynYm{6-=}}y00C=rD|3L2 zjSa8_e}I2efGNPi&c6Qwg%f;nadUBTa&qw=Ja~YcpO>GXkC%_{&|x8gLx%+q^YIBB z7Z5xueC*gU{v#(ujth$j2_F;QzX%%#_!&+v9xg5(;X{0fg#Z7Re{TUnZqD-u6FAre z0d_$)4nekm?|@SPzyU6HUx5D=Hg<502M%)cfTzX&=hXk51c3iJ{qGCF&%p+;3vdX4 z{~|BMyxzc0p_AJrUEJ3r=o3MB2BjpYKAT%)ZM&{pj3+z2hh;sxxiUw2K6Hs;sI>Qp*U&ti|Mt{hqp-WTPp?mFVAm&Bemus z;Dkc~s{R4W7wO_FI7IBfjX;Rn1?Gec z>1n@QoNB7kd$k5`?sW~SExmZk>D{Cnj4_95EjW{WT$G+3nXa81fbmDD-gzT;^9JP< zOm{Pk`gIcLZM(4|4v)~*sJCtIXkR((sovL2rJM{oNk9J(Y4T;_94$S4`W4Hsp#}v- zgkV&VW-_<&1SFNBvLX=&Sx61l4|cnGrfRayAiZ!lYN{5djK9XH&qLC%+F0#;sJSZA z`dD5^5JfEPeK72}y_27gs;9<$7q+9*@RCGVDNTe^M(kd5jmqK!<%?N-+A0fK5Th3V z=N4)b-5LyZM%vu^P4dLMIVjuqS-QqhQEIxRr(4ZMY!lM$oij=5Jh{?v_I8-|7>z=R-F}4_Sswa0q4x^W0RI|lp-#ZptoA*l zcIbxS#Cyfa&>^u8!|(CKKlmrY^B!$rbWq{gPR8=e(Cet*G_qIW^w$Q?(j^T%qzjGe z&HpoxN8$t5NCbikUFDOz3%ql#623$uw{@$|l(Jeef3-);1}=-vT-iuI>o*idb^lL? zaP88XjM$9{6beaO8ER)1F>e1I3y)ub?)i*^P zKYbwox*vRvh7HHTs2F>hFRvI{s@EF}+01_Fp^&ptK5X2?b~WMS5#`oLvp?i%m0vx3 z?*otjPsU%SchR~&*$|zCZd=@f9SO}#vA!?M`#>v&*b8OugfT-Mlv)x@*~0~{34KsD zODU1f60(A3$~dTDr7s$5$PVb3$VE4~czm&A*%Rl8^!`=JP*q{T2LPnYo}8*+^UL)N zpcQ;1ZbZ)phkX7X7u{`hqUr3M2W^Z#6Y~nWLQnr)v^;^@Am0cv9t#|vxbg`}OHvh~ zCBx>@5RZ%B6y+DG-WF{+b6NcF{Cd|vK(62L)aE)lkTKG+5)j;e(hHVyHC>ofL($AnRrBB-D7L3e=n+ygCV#CS-V)sEGga(VD7+p=nD>*{X| z6xv~7dn+n@=_PBn`rGe~=qH(pqIGAvN|X!u={;1+e9T&!xdyvtm~ma=U9AWHRf`XV z&iEYFG+OM}mG&vT#{-ed%W|F9e2qIe*}Ikz&o7w3?PFyG0Nm^e07n(&Kg%8&nk?C5 zhD`N-B6ZrMe(Mmbp^Y(6YTFCFa4e~m^?ZhCaTQ}8h;;X>IoX;4`;G~CjE&4~#sm~$ zCW7(_zjlwPNg7};C6Ay&@nIpSI-94aPL<4$B%UyA& z7$cM7bZB!;Zkd(tv~M41vf!^l7RLN)xdWV1qcszHWyN};&>ut{Jfm*DgBhZ~J_Ieo zc6&>De_o)^>OB+Tl_gytta*!cB)Hm+%U|QMlD~+Fo^iM|5c>~^l$5{}Q#WQU zdZ*}&6yUx#k9+<_QH0kC)oz8^d{k-}4^VYBfXgydK1=MbjC>gnL~s+cbLHjiIUO9# z)~wn0$`2ur2ZWJ9r4+j7YGiGdQiU#YMh-D2J3$6s~J;%y72e$bmvvNR878?${ZX7A2o!RS4Km!{j*;Hmr9n_ zcd9YOMpmi%Xo>D9w{v}®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

    A$zjlUvJ5A(Y1UW16|FXmmop}}T> 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⋘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

    3r&j*`d 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 diff --git a/doc/images/dolibarr_screenshot6_1920x1080.jpg b/doc/images/dolibarr_screenshot6_1920x1080.jpg deleted file mode 100644 index cc2f2e6313367c46ec964d608ade15ebcdb8cec6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210977 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%0A9MYv3{f=W~H7a=eev86pc4?eM8IEm?0p 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

    l;|yQQF*h9w*M8EnxzLMZ7Y{_iYRn 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®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 F{!dkJL$&|_ diff --git a/doc/images/dolibarr_screenshot8_1920x1080.jpg b/doc/images/dolibarr_screenshot8_1920x1080.jpg deleted file mode 100644 index e09a1b332c14d4a1b8da16cac6a6526ee273fb1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224693 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%0DLsMditMo3xL!ujI?eS& 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 diff --git a/doc/images/dolibarr_screenshot9_1920x1080.jpg b/doc/images/dolibarr_screenshot9_1920x1080.jpg deleted file mode 100644 index a280fe6310c916dd0878a899912740cdde44eee1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225077 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

    *`%}xMayGcXG}73&$J%)ut?Z_6VNiZ)%>f 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 diff --git a/doc/images/dolihelp.ico b/doc/images/dolihelp.ico deleted file mode 100644 index 82ee7170213abafe269d6e1f051c7087afde2c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZ{iYeb({>Jk13dY8MAVmG}HSOscezK}Iwzv8DC8_{7ONJr!uLkWY1){2=Kus3{ z;)ju?Gr?l{jJWuE16!LN`1nt5Z?b4Bm_yxSfv9F$nP`Jj`yL0+48qs{!2sXm z=ZL)xZLvp9+$?jLD-hQ?LrzRWl{AUSLnhGoOMHi)X)i}}z{t%qhq<2Or_QL%X{b+s zL}*+;==*_{Af$mdZH|3CRTB)qvv5o6|NPvy^m zxt7wY5V z$k6qzyC3RZP3`4`)In4bF&`66Y diff --git a/doc/images/doliwampoff.ico b/doc/images/doliwampoff.ico deleted file mode 100644 index 2b19b2ac6a5e72920053e291b3845cdde89ad886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH`c~FdT7{|Zv-1ogGN98PRkt<2gRIXCm-4?kkwJlLzX-nD47)|4fUAslfF=!}q zr*a#)%}8a;madr&IoN52bTgm>0BaVu z!dMn@|2M*1C0H}98^YbYW37idgc%lyoY@mmvwA_}*#|LRme}BJg*YE;Xnp%3Ue+H8 z@&QO>iIdx6liwh0R@y+Tlw!+#TO=(QjAZ|zNc4BW)b_O}Z5Ih>jkTKXE>;hegGmI)nq=h;nMKuvyRa3D~?F56`1?j8CAtTHg z`Y?CsR(l{L!WFy2J(0Q21A4(5hDcu+*UQk(D8WIE7gD3-NYf~g5$%h8(Fz>dD8o^$ z0>=`R$YRM%T+R}JLt9iho)n0zr&#^P*hEY79H;rw1PT3lecn65=$dOR-ek4Jt+0tzw{QFvezu4Sd*M)n@u$}ynm zbSiG2JBXqShw=FO89cdp7R9&oP*RkK;-Y+(0u|P;C?_EaO{VRAT z=D}5zJ-mtX()%bcdxV$IpWsdTbG&=~0`K3x#D}-9@bTSieEIYN6<S{67fBQ@P-~Yb@HFuzn3F?}l-XD>Qkg5MCNK2)nYCv=tEMnEhaqJkImJPmZ zsg${fgo_|De~5U72iADz8W9sjAuJe57oo;8XGTmU;cs8dGuN1yL}KBvTAsNk#AFhS z9Jv4S1)^$7Od+v&ph6iOA&&G5$TTCSaxcz3Y25Q- z$^AHLtqC{od1)O=&5c@H!ksqDcxkJmHl12K!h?HWdW2IOPpv&MgEq@~@ungSr`C~} zNvi;H?&U*wKv>zCOebO%d9|P4ycKKsr-ixPbRlMcU;ezP`*PEj@cb$GwAzV_t`fql zmS5$}_Yz4rV$N@V?Gih_W@mTe7atbnJCZNyG$#g)=8PI)+naBGoE9eNV*+av^fN(! L6VyED|7iFIH4wIm diff --git a/doc/images/doliwampon.ico b/doc/images/doliwampon.ico deleted file mode 100644 index 4aa3ba99b47780bde276fa5f717b943607693c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmeH`c~FdT7{|Y?BlnfN$PvkvR0`>mGfJhDP9)Nywk4GpZIrEyVT>!4-6AChjk|J0 zIWr>HjHt$pnJ_YPb@;u{kD_7rPyhJre1GrreLlOhJMZiZv|=wE9k5danHoSJ0D3HJ z1xprj|2HD+v=BK@8&URyplPVWdIuc{jzh4~X((cxhe7V5i_NYhu*Gd8;@$P2@X$ws z=V&B)jX@Giyq5vC`HaJM-|Hc&||kP&WyWa&)omd?dtnH7{WTV$@a zMplFk(jx4Uy3PSv(RN6QazXY62c!vZP;T^qYLh2&oyjNDz}xUg4-^U2XTb6^wBro`Z!m{d6~q{(sdU@R^w zHzQBE1^KEt6r{)DQbs&39}=U$6_%@+3KV80;M$P{T+d2GQFaoFk8Z>5++^H6dl2`| zDN&l2j{BE#PvDBfV zz8(z?4QOl>)A+Z)#Q**OJJ56oTB)J68ru93i3pjte}c3`BC2*oUqcbSUKWHmSGuMHbNy5*hg=elKF^k0VNi95coru{a z{LQ%k`30itOw1v%Vw|^cXtX%eFCf!}n9IF55A&i~22sMmS!)P^( LQA5*%{*Q+5W`V1Q diff --git a/doc/images/invoice.png b/doc/images/invoice.png deleted file mode 100644 index 2200fd1e5f8a153e884039f5055aa81170f016dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54939 zcma&NbyQSe{5Fb;fhZ^_ASvA-&5$b64bm`x(nEL641$PsgS2#a=ZKUHFi1-dHFU?2 zGxN^(ch|l5U3a~I+_TQvYv!DN^0PnrJUd)VL-FZj>c<2G1W%QfKIjk-+-1XWxJP&K zdls`Y&;$h2pOinm`{+Bjm-Wz)e0H@Ncd=A?;e6Qc%Lg3N^*wZJB=s=lTf$<1GN+{G`P<1n@if28G{(-2eN_@eto6-NQHkZyzm^|Bn2h z`uxwy|8t%H>2p-T71nK$w1Mhlkof3z&ZR-~-(^T6yOx%S6=NS%o9$NT*GIl@eMTcG zEc`VQe=9A-JsT_EOVba80#A>lm+O%W9eWF{xCZN+d15IH}cT4672Y#|4`1U5CgJQ#wB8vVI51>)JlhK*FG5 zxw&tJe#03V#t#Oi0xv1DVqBOBmWgZ|7MzL##{BXz=nW}B|0xJx;)&USN_=edtj2tOF$@3USq$Cp=~{!ogs2)7671z!f)SEtGBsht9AZswn@2uoEBNaq1C4HjJ>TDq2o~qC;!Y#F>ilY!-uD&f=zNq>`|M$4 zeE`aasPwSi_#9ZokBALnPant+eJbyLxT*T;TW&J1xG&q>%f^)jxrJdJ<%#M*Y@q2qAShYxmn0YGv~G|qb5%-b z(2AekYt_yDK202zF+BaFhRfFpRa}B0*}r#p&ul+X(;PnO9Dm8heRW8g6?;@R-|gx* zSZouv9wpNXFXiKA?wUowa@e#;YKKrIC0$Fvy2irXFN0Rz6Lyr$On1-E*bZ9nZ*BMa z1~iL`Mr7uXja|dxsq{rg6v1A?@$}P-{g0sdU9_oUwq zrx3_+91<6<9*8|(=p<^^76H%UvD&VJuMLSUx5e-Ll$F_~r8WJ1k7Tm5Q<<5eIE+uA*Bt`Q zAa|K&&Nc4M-#e*<@D)M+{oB=2l+L`SeFq;l23yF;*KRY^R*Y-ZStG>Fh?c{*O@L2q z(-PsOC%IA>{_QD&TY}-0Y#E8qNjst+B#)==6G+9wS7P)f0(r5w?Ge>7m7fArX0(I!e2)ff zQ#yDleVi^YVkWTW(w*zl7*)*sQFjH8_gyU9db-rFv>)1w|KU>xg~d zwHzybsFrCUY27H*QsopI>i%6DKAIzIXUTZ$%eK&8goeMYYpl=DUmt!I;Iw~X4#h-M znzJxSTB9<_*}uCh^>DBQu6{N)y7p`Z6nnPAB*0)b?th9~t4Pev@WZ;4map75 zv3ml?j-IrYtm}799wQDhvw^i-nrnvRHqD2Y%pq?o6MJ4B$oy*c8ynidZ1!R?cuj;D zL#nLxg))Y=xm}_xmc$&V`T|rTCNKoh^EsY4~N8Sbj>$?li zPEIVE#r@bS$Up6Fart9AU0z*f)>?PAXEg4>==AgV+1cXmv^qyvb9?m2R8rChSy{ZT zKOzki3e0ai^S2&4+Mna9fEddwgXLn6F!jg)n%&5uIsYG|;zF^80Op>a`^6feRIkFN z65PD`MuwP8cFW57BXkzSK0xRbYx>2_jhQr=8c62anX#9@f zE6`%f%KXn$_y+nW!C%o+!^2}q=^3QdEh6zl<>meRJQU@{`OIRX`p~NrA0Q;n&Ze8v z+)+!<%e-CR#PoJQ703klyFsO*Hb&Y#_YCE{L~1qEEiHdUN5iyq?Pum1<6~m}b3(Th z$rAx<3JSiy&!BHIYQu2;{%$7CIv@wUGI@A;tsX2U$YMTNouVEx?46$N+1tO`JD>Y$-`+RVHvD7pCLQGP2^`o&{M4|f=ht#cCx*z!=f7{po=aJLaEzJw(Mebc^zRo!oZ)P#uBlCYO=c4hC;*(96i_i2^ z^qKEJF+PSTji$}uo~FoTxmzobghd{V`hHAS1r>IldvjxX*=UvK-n|us%~&9799l(A zULL;GIRv@hR`2@g-PX2b=R~))ldeT_bu)(=k`27f{Us6EbSc+Vds`?xqDXTM&vTy@JyK=>%><{f(5$28XKXxFpf0<`;D&f@#GKcSu-n++A3U-b=GhxD+Ia%k%~kJSg; z!V1b)$e1wQ@WOYza(R)%<1EBr7c(;#I-^d5Y_ZeooWJzUL&m#>E{kS+dosR#f+Z=u z)TE7$<=c@i>C~+c_;XmXxyma_a(gGK2G~3wi;&D~q57txsN1Y$j}Qe_k|$5dsJVEx z%yE0!(u@21XYuhMKfhcALKb>mx||lhu+YjYB64@+5qDT1+IjXw6qijygxjHmrGJmKW$BCFjP$uP1VeJrYH z*6tl!`*MB#kvC(`WJ}BG;Gn_jX?Rd*Po^w5-Em|T(a%cq>vM4?uJyyQ33J8xUxplQ zL79MZQ~@rwUVrpT{WQc}4l(W^%AW#8BUkxH>xe7JoKUXLy-u!z3%atO9m#9Bm>~gU zlTPJBGz>19>>1)1)OKn;&5um1XQM%?^5G%8e#RfNJ*ba3Osx>Xaz9V3dFLz8r1!UM z<&0KW7yFw924z|r1EJ0NOsE(7Uhy_!16zBmM8|wJD9lG>vygooXa=1)e|eEkSi6jL zX~mcBZP|nCom20dc6!5{Mwl_c%*m;gk@3!L_XIu&a#kXF^qQWUj;_=HcvZmXB1Z=6 zo0k!km}cZ+G9LvWR8hLbhLA2%9U2`ihA|wtxtDbWru9x}nPk*?Z1&QLW_z8Tlg`g! zzv#z|(YR3EB60DtH`TDmqklcF766fANS57m+FC7ob7g(s zW&KBb{%Q8itl^veN)HY5y7tj)xsUPxvJ0sWBarQ4ki)K|Cri=d`nBcVI0|{QLuCV~ zoW1%qPymonk4Rbe(ReX%|?dv6}H(u4l5QCga|{9yz(E^70v+Nux-JNsH~AK4~l#fq0dy zo1W5Sf!-7QDp3zUy54mLO(*3@&P+^AA?E}5c+@V9o?rDk&${o+gni1uYkiVgn=o4S zYoA1mO|%7yK`Um(W7MytJfN)9?-o5jXPd(cLK_+475|nlDZkPYHmaeAgW`nF%Rjko zrx{oC_<5n*SXFsacxp}QJ_eYehN+l+JQhm>!2YnHxXZK>b-#JNBrLmYJBg_JDSz3 zsjK&yr4^Y=Kiwl z!_yeP09#b7!uAY>-r(szy-s5%PtJ`DYzK)NcHeqNct^)Ni$F0F<$`JIjSY99Xmg9M%38E0$JH>9$3;kTRJ6B6TB(U2i0OUU>k?s>{qSsBffURpBj zf39bVd}PXWyx;uP+Ik{cE?ovfLPFmC)yMC&k5b**%3UMVuA&+T_7oQ5bB--7Jt~l7 zmy$9rFFSCf2Yqp`upOzpx%?c)-&MlL&(5v6zo4w|&u_|6kr{RAo0w|O212L*c+~I5 z?3kLmxsS!(;O%HJcX4Bt#!p(GT+xvveUgxF@lL1tetuYi6z;Yt2Lk^dG55xYkH`W& zYg=-Uz*iW~2$R&s$buF6USk#HCO4{qy0>V9$_vf>$0BNf#QDO! zVej+lD&B!kzlu0HC1wKMKMyzrOwH(5&C!$}E%ZLhSTzTHboW2qhotyzd!xsGO zvg-bn3#>|+gQxvRCj%@qm+Bd1VO;0e<=jh&F`U-!@;+9cSxbOTk#JmR-Rdl^jC0?9 zPj>Ze0oFeOR+(qSeTmk%GTC}{iWTQpp0gYEzmoO}%pw+ykv zJgx6IY86%XURMK@qgj(hmaX@RmsVkm05iZkk`(FNGqupMbAnnzdoyLA z)6-ipHHHk8&}FKrDmuF4_wL;rxOqWa)4&6B{jz=pOu}1s zD7vB>id{RyT%;Wz+f;Wdq>I1o>(h0v$dY#bb%eyRJq|xVWp--M2LiuoO3VK?mGDxz z>`(uB^Xsepp3D`?;bdvJerk>TPFZ;t43om+e7jS=%gQQtbDh`GG2MB|gs+iYN}jkT z>&7RNJA=5TeCOV&4#6ubkWgG_XDfhRBK>v|Ijfw`BeOd*3b|N(l`JRY0=qq_%Yjbo z>4{8_X{RLJu4ef-7r$D8h4-&-j&N(J(roR~zM`_LtXKd!aAl@pC@4^=e9y%eBHf)A z+pIC&4?i$2MN-5=d(2EF>>D`YjL|e zUrd2!rZ_p3lId>{75G$L&gavN2N?MwH~_H}(zP2M29=Op46;t+yI>6PV-U z3>UJAM>2<9C-AJ~Q^XKIKNcGxMoc{3VqaQ?P*tno zQIV8>Wd7*cE$M(F?#yL;apKs>JU<10hGF2hB0_-AsM_)G-Kp==i*?gOq`DnUGAM5jW@4~+R$1+@}8;cqM zm#(w%Iv3dD?wYRm@h6vnfX{BVwQbi4E?wdCZOND42Cb%3lD--nsdKOoBdQXR%*((e z-Rx9bX%NNXSWME3>TUsbfK=#<7e7vYa-}Y4uTq8GP9`SUn=}kG0Oo*RtFU`_i@4cw ztMWqFiPx)@;op+hX3XXOuUD8pgxSg~90&@|S=v#pq4do374)ZHQiip)jzA7O!|&t{ zGT>ubdu@ep%NUyOFnt3bCXPQ!y1GC$HSd-8P?P!Wjg9ciE*qO*w})&=r`@~Nk+`Ff zd!Y#)J4ruBKKvfoTa>)0A0@O@^5FWr&>_wpDJ-5|R=(Ek{8UtUK|c2d8_Pn6-zj~v zT$GpR5Cy5%dAX5Mvn~mv#raP7Ls1hH>OS2=n~vHP3CQOWyfNS}Do`^(L?0YDaT}cQ zoFj4lZEZktSBujG)^9kh7+zO`+>6HNCv?pX4ZV&(se(Iy1{gXAcAVtN|MqzH2&?~` zvbxLN`aM_hXmnFk(fD|Oxk14E+}D7LDPU(?-@2na;(EBA zHCg($MKNHA?}cdUiOgD$E5?5!KjV))jWINYS_!U_**bzWe4Qw4&pC5mDE?x znDNA8Q^SDd$}S?ZSzrG#x2?*+7H4%ZqNTLDQ~Ks?TaTDRt#zfJ#^ZXo`aZn1`pJzB zM}ZN!4E792H7>=JA*Elf5fwoOM5-0G1>&T~LZ$)^7ip=UEqz#hzQ=SqqiEm*OPrV* zR$JkF0%2pb+U@2wVVjP#G1@9pH#s|txx5rkNp8iQ5NpTuxWIDB2$riuva2dxBV?o4 z!M6X_(~BQ>81zZ(QN4Trj^_=`I|2KzMj7-GV5Ejs?RYG$!1W>6us18qI|II z=3=mWs>WBoWWu}te#qLyn!yJKHa6D2-)cEWKP6r4Q%+6qDzLEbTZ9?zSO0dPC}wy0 zHR`FtFZt~&nXL;N*rbgfsl0@(#N|LpD- zw_k2+PVAxM_0S^bM>!RndoEJ<63;SN*6r^7vM`X19NM03pS!R!DEeY7#qWrw7a48K zegvJbS5t6dz#FRD9T9uQuldy33&;QBM;rnI01L=^I#X#?2E)dy7LLu4RN(dch!|_v z72E!w_zY=jIWgxrXt?|zSa9s}p(IDKgqTlO`doW;hv4VtV3-0xL{IN7!%=_D)oSDo z-RQozS}U>b>%2-?^(bQyMc5K6U8d z_lZxJoapzP7{jC=SPQgiw9f$+;%U^QZ5ubP2}6s&IyWSqJb$w5x7*V6`O)lLVo8a& z_m2s4-;*Sm=J#7ESnrOV`q14CrTzx9udg2Ko~}PN`Q>n=znI*&URPTD#OcJhc_WP9 zINf}?GqHPn^z2wbdQxf*YOEe9#wJp}T2tnP(tfw~=+N{+gIqubDfL2JjWJg!*Y3NQgm2u_Ke(@rNss*y0F;`?lsCjoM zISW};mpU+#63{~TX_=dfT}@dOD~nVd8wulF_m>Y!d4*CJnRr{yP+x1`ws|LjfPhpV zuoHvIH|-~qjy+n6$?|`PrRnTYF=7?~J`O~g)_8kM_Z!5-tReJCQpaY-ef4dxu&0IR z)`ebE!rkrIW+oA_Z=SB=X2&NErHjfY1`??kPsA?&xTrqk2+J05qO|-`Jk$C>d)8E; zE7ZY?H^Yo!t5zo3hcqUwcAljnwP#!1?W`%b_?Syl0U^;y1^ie4r7UCgUj|De+tXs9 z8Eqe*Kyr}7N0{cpAMyQaiplN`!BJz!lX9?y9GTQ7R2)pm^ya0m2RW#2zFL zZ3bTK54d;eUCq`yWKz;C)(ST1w{2Sd0%|R41if{C6c<2#%sd!in9>dKAo)|ak6d-r zG8l%V&Xk{qI}NC|Clnnp1%8f}%%rQzqu*0)wj$5 z^%NF8788(77#GOgU&(XsjLmBhky=@9`z0!RaS=KFK$go_jyv_G>>C+3J*agtX+owGZ)9?E4Nh`(b0L(itvionZs^IXYz*#kp zu)r8`z`2j78mv$>mv%MdB$CqU#Y+(i9OG}=F3&TAb4$k{mm#8 zD`zY^K0cnxZ%$85oj0+~%F0SYLh|X;C-UwG4%EJMi<_H(k>)D<9i>b&Gqc}!R##V*SVBWXS;)v<5_xP4r-dt(eB>JBCDOu2 z*;mPQ^ctF)?A)W-(vcE`1VtC$ ze7rF+W!XrE;%Yn&MLBo~%ek1fHSfAu;u&A{dkZhEu7+-A`6z`b=;*jd$m5I3=a(gR z1@P&=e|>S7i=2Ri*5YjcooKNo!xmRd_+@$4SKDmAZ^BV2JVu}F?3Ae0td19bkRoDY z>(h>dwatRq;Y& zBl=lZCNZX(@ngHPd5Ni&mD|maz_q&O0S))g5O;dI|KXpSB}&3?DZ+gXqw1zapZzZ<(HvA$z%e&&|z^EH^!! z+WzZvy*M)n_R6+S*$@!?L;1-Emr+@qRJhexo_w$22QxSvZp9sL^qTQ*Jh_n^4@ZR> z!LO_p&)&h|({s`&&t^|uL0N;*bnnQW+|E=FOi**gd}sm21hp6O%5*6Jkij>_(CA^( z@>)Fc!ohCfjuZRMQGGTw{k!A}=vDv#2|oG~|Mlz9X~s63$f&t0zsWnooh@BF#LO(0 zo}SBNvnpLk@gUXwyGsf_(@m&`0pA3m7w`|bogdqkEwVe&ymY;MK7;hTvhLmzU%jZN zRa8`DdZ2UP2MLJ_rjzuJBPb}X_1c}z5Ocv7P7Vv|vPD1?rL*Br2ruCOq1K6siON9* z1uS2PWU!ZOdwY&`8^6BXvx=wU;Nej-1oWD$tgNW9C3aiHy}_F%YNJ*N#-9(m(-a(h zH$k9IGOUMD`Ea2%(GiSFHc;Zi!|8ld?(2_;kn{8H{^t$}`05SB$W@4!k#R*fkd~HK zNzT^S_lI57o*)!^%ULNw@QW_lL*<=h7Bc3tvlkrVcB@Ajee{VU6*8>5X?W2S$j>f} zm|2vvwrgNC4t2LTJOYwr$^1pG7q>bJQ;W#m1%p%zSY=IxdTCxotoEu1!IP3`EanYRX(4_mINU zL_p~FL&(WS215sWF5s48G$AaX*2u_+EU3W|4@)u{dhAZ~g27;&dUCl(^#2|u$x(BA zN*qcm=Z_J>joQ6=$B2w{fk3{kgl8{auvBEChEg@3d=(NG=U`(~(1+mlFZd%96O(?0 z;qgX>i_H0?E>4W(cwnU`EHqhePK-RBkdW{Z85b`vYoxTaG#MG0ReVF7v9a;@Bf?6F z6_Y@Mpc`!xpUaYrlWbG=^BShS%zXNEOVW$Z%!#z;J0~(pQ#3Pl`xcrVsXfm0x+Lw) zA7{pF%;D(9e$@qTZ1^FHipSiUk(JeMb-0A~B&@it?V+}Y@!WoroG}2Ho_+$mtveZD zV1?Z{Z;K(ngRf8>_>p!#p$Wa+%6Gw6Fv>5MZua(@W&PKpjqv(zhmtCw0jZ|&Fy65l z%~nr;{#o5lbbfL&X>zY%im7DxK74F?nnLOuW98E?^rDXcUjIYQHG+h=6g4zrgg+62 zltRL(zE|L{9sB2#mDM_4nK`~I)*SXC$<)5bdH>Vljd&PLc97j@ZFjf4 zs!F3NVL?Yax6!fhtQaB$Ph}6xkgabaxysYBS~ z(PQKg-Y5-@{fP#Jo==4}Zyk(Y4|Jv`X2dO*6p4=Yrd83N@YlwNl{r-8Afr=KN-rkZ zfVjQAhPV{AE~8`21z8|+7`IBint_KjF55|EUUyvuE{GjQ#R4$4ZKO)d%8OMuLD|{# zL~lUT6%i4SyV=GUj9T4UOWTzv6#rH{=fLZw;xmi)0K69r7O^t#PUnPQ;hnqknq18{ zyX64}C<`|wKTwTAIfXFR5|IgDR$>(pa8p3VvCVvFD&`3LJ2rMaYnu}`3KoyF>6E9-fHppZ?PetxT!6eCsD$e(|F!`HN3MYE>zE3{env3Dhug`bWW< z_9%=;rhL7Q0^=5_(%a%q91FE{eXaMv(9ra3RYHVbEdEqfC&Cbk>w>v^oQc{J9o}QkLV<{hU9_O-6(2My>j^ZVyVN6)01bB^`2R;kFz$yWvJ8pPfmR>@^e9dyAjpp7$4*utDxsz)r3$D&DOW_53j{vmo{d z{-FKP$=|o%a>EwfZ5t>ki;E0IpDeIt1sss_X0D9U>ueG;b;yHu3M0KgQKTimy>#L8 zDXC?WuFq8!myRd+O_%R7ubiHfK@+`y1}k^RbCzzPA^^aRqhp|r4$1Me_z||3$!}~o z5BmFwP;vbu8mg+DeUVuo^#Y8I3E{aZDP+h;ZBK@8ZchPtvE0KwN2DHhac`CM?+U&a zj-JnLnx$ zX1J2Z6r^=$gjjqP>awX@6ZEjK3l!OJ8GE39(VM?Az`?!ft#^wco(1Q-9m2Q51Az!cz3D&| zo-Bxnc=h!PQ}SqK$ik{x41Z>h*V~4>P(ut&)%g?V{*HQ|+&W$NQtTf*i9am>g_h#%hpeMk0?{hY+Mm@1Qq z$c4-4oW^Xrm*J3WciZVpy7%PI*24w|_ZRjKSZf1!*{VaRx$llH&}QznnCfryfl5JX zaig)BUZ|f9%1ee4_)1wwr*aeG`XD~WI2+riHirG{N2Ax=a`Vk@YarSSVw2+N)h>*V zvT^tpR>Z-M+iAXgR%W?c%!7S9Q7&^y z=w>(&yFkM>>a9WgyUTh_uP@XdE^LU?IM;H;cxY=evNRsItW z?Dg)|k?R-ty8JwfXrEV?ejP&u$0Gyy02T|XCTe>km2l;b1;V#?b_B)5%$pov*~>pi z**Q39c*fz8H_|mhd92;Y`a~SkBWq#7Pdatf!6CcdDDb1bp6k&dh}YBm^UpBrISwGEs&2b&hOQn%W%h^s1Qjnyk zwdxLbzHgEBG>FO@TOIf0ep6dH;SlKbA4^?(g9kjW2K^5hFEi`b zdY;~X-IaNqs`sxk-hGGj^Y+ILHpGiHNR^=-Rn-i;vv!-7 zDiEyxdL^TyFMdejv0^zCHc~+-LzD=;5!rC`T>20JFm|XWO97e&%B&fKW3?<`{<$$@ z&u^k^_E<)$ko$av&7hF9MN*hE!1(wg@TI2$>Jj})3kP?5X?d!x)uU|WdbUL4J0m0L z@uz+H$nP#mSNU^)u(zlFA|l;ZQ!79qjHsZ9KhbDSGA zf-Rdi(z84u>)$TqO(cKz!i*@VEOWOrkuH_E>}zrlie&S$ZE$CAVSTH*tm)8`hG^Sy z>-qN2l~;!FX9uLx|2$?D#sKzqERpl%Pj?un`bV>oBEmq>cBn;r@O(NZi~5Vf}ob_#?N-9 zaxhX)Pp?>cmT`vkue)~JG&ac3-&$|^5N6Uso8i14X;)yanekl|kml`qLW*rF@Vv%2 z=@-QcT1_u6gO@Ma<@;U>)o+}fbj8H1FSgHAo7%tTt7`YH?f)HGhWEGl@brBk^A+Y| zs0)Mc?E+(j=N>$ke*-5N6y?lXxD5MD>So?t}Cnug7!S$!NK$w^J*RbQ_2?~_Tm$fDM z`p1vA=*^tMesIrjUjLz>t20t&N!fK+CI2^)OxL+`86nL z`FvNMg>^tJ_c>hBu? zk0}cqdwX#2F4vrQlE)ys?Xj3dZeX$9Qi;c?Y4x*ccJ9s zW&p*Ikd8^{rBfyJFM_-;M7L|2AP8m(Xn)xdJ28+U)pt;*>cxA3(n)koK3~MpHa6T6 zpDd!*9Yx!Bm3WFBPv#10f3FU|5dxK)1d1)(!;&o7BMX0$_uNEyw6Vjc`{XW3?j0!^ z1IEo&t8$-3ndOy7ETDMC(@g!N5M|5%xgY!db^isuKA8Z|v$~Kv5MyLo7f>h&Np*MG zrHFQ=x-oz#<_SS;N3!l})xi%TI9>Rd_Of{fWkvEr-lDMB%cz(QaR>j@`X8^R)8}_{ zX^+G{#vIMe<-bsT5HuhU$UI=7v6ds1efV_$R~|S0M3UTqI?>UEF1}CO3$bYeUqX1R zbpAa$-bGK-gyrzN<{$!k&HttY{C`Cy#fADy;G20VWWIr4qyx~jgam4zkzHVIZEd_% zN!0)%A|mZRhtBs1)bi`<+;^ud|J$tt7#kaFxw-Sp6JHYy4i3iCME|#y0cXs5*>k{eD_(gjyD#SYNXr9T9Ig!EKJ)A+Re zD$oy=t=)G~5-@35V$Ag_@|}lk42Y-s?QS_YooIA@43nU^eF@K{RJ^+G)2}OXv7BLO z)=x6*I(T&c1-N`BL_$`#l&TmyQ!8;AdnNIMrrHE%Z|i>k%;6mYO6@Q3IU{yB0Vf4R z)CVaQaH=RCmqH_ zXUj#TImuXKoBGhS_RE0;{?U2p7yhE@xw7BoUg}KF4m|vopp5}7o$0@9Nj7+jr=Q%- zhnBXwlRUUhx>6AQvZK#cHxT1kRa|bhdYbeu%xJX}6sJy}2|4&{^zR zSGJ6sURWB)T!^2Y(V(Hq`jkj-EbHdLxVF)@cvqc1|gQW_6vxF2C&U6V#r15hYlleLP9(Y}N2OtpOMU4D`2XisOKbo+VowdP&UZP=u-dvfu1ZsvmSa}#t1)yxD zaXYqn(2nQ!5*pbocH{$WTWvS!TJ$aDFhut>!!GyRFP5?oz3snCKI6mv&VVT^V^6Mj zM?3ir42IV^H_t;Ka}SVl*~~bb9WCr~DYjp>Su|V854`kz(^gzCsA-wD6ESKI-hd&g zTd79DxWZ!dDdH3T1V@gin_MZvmjNH&4DY(bsDAhtou0Jo?n&^6A`@e++qLD zzzot;BCZGYr1LC$V{f(`36(#oWPONueltmDew{7&x5DX3D;WI zv$hmpDW>VokB7%|Xo*df|L~`F6=zHvCQ@!N_?-pzwMOIVMx#R4)I_hbAx=PDaKv=G zDzt|GN5cGH>W|wvSJX3dshcy}3&D+}SMZxr#PMn!C~#96ciw;3zw}0P6k?Sr(Q6HK zyT+!GjtG9M5{H})4-{=PXU5zU;uDG7(2`gqTVm?GZV-+rk{s+%Uu2^|GnBp`%_ z>qmzdP5YPvpchY!JU*+uk4kDhl#+z*dabY#gN)NVI)A9~|uj#8!qj9i@s3<>80wQ3w`V2*NJ7$$%L#Q9uH|Xs6icP2R zx(|zkuRjI$zDv7Eg*tiF`l$iDo|jwaq_xY!qNiUpUxnC4OM8rSGVo?Or7cQ8R4eM* zvi$!Z7urtyQ6zlRT#I>0Hp&ypGiQle0P(F%q65Y9H)W2aU7Xbg%`gj@ovk7)bIDwm zBP^tMhEinO1vjpf6U$+7IM1%EVgAROoh#JZ-NZksm()PKH8{&z1O3$E^`<)_68H)y zgFn#|zTNbh%uN_lI5#t+*0@@Vn|^Y51xX%oU^M&2xNgN{G{T8}gw7@f#Xd@ubh-eN zD5fe%9)DqdInrL=m#nuj>VLg2GWZ12(ROS#@%9HE?Bk@{&rJBcC0{<8jhWtt|C?a( zhPudR2=IpmEI zLTisQwf{b@=YI_z$eLAeK)12ncvW|8*X({+78~W*R?xPeRHdj-h16`^igdY?;9qHb zn$Qv@Rev_4-sdzjy9+awQ01@mY)1)=&WBElu%=f)cFxtqxCyt(P^NBFx-m-5+PQLo zU`3u@!sI0;cy4M7_Hs{g7eV6j>V6DT<}}=TTB&qCc64|=de>V2hSwibk<9!rZJv_r zbPtyl`*h4hH1Pb)`tbqe+j+N5|3Xx2q=6z>jy^K*e+UB%WT{ZDNZ6Gt5R+5zb&m~#G( z^TwpQ%Zg1Ukd+RgBB3%8h&c=}$MV>>_#=o9dFFnD3Og=GR#6@>$R^AsN_ObE^7o1ijzdKj2VY4De(}eP;`jcp;??Z{>C3^}2F%U{JyC==}3;u2Fx* z?!-%)Rp!`P*LT}zAVyDhNVfPFMdI9Ts}aw%*5MWV7?8$Vs7TqG%(?!XoGTr$f65=h9U387a=W@-&gju@7tK z@}JRTZD9kZ0>Xb)P}Lpa$6(&4ALpL!irO!w1Zdzrqza&N^ZiC=@foJ9rvBo{qM(zj zM;@^}agi)@4R;(lSe2b0E{WCib7{2vI3x$>4RZgGp#V<3orGjyjumsj{PwT(B>jtP zdd4Ie0tGKVtGYQjwC1{5zD(7(rS>0i^RS)|FIGc0#;<~V@+}?DE0Ye8Zgc&|TSg2RQ{5kqZR{k4Qy5UwQOjh1J z=_K_8)3Wh?h74#R=R91HumBuo0c+a>}e| znF$ph5Z7s{s4>*0BGOZLFD3N4^nBk-`Ad9lDv4?Y!=Fm-bJL2_+V+~du3k{zwK`>b z$?VGb&_y#Uw9>HY@V%TzQ|yR)bFiQ}x7$U+gER0q_k${0?{kW9KZleT()V^d{W>$_ zX%DBamn>HxFP>gR;@RK)7x8hAS4qr|7OC8_0GYe5i|B;@(Xw2Pq?eQ}#m`kH7%S>j zvJB&G;k8FkPyNk6lF;*2|DVGuIIeyUuh`(P2D3q~!kFZY)WHJ>+I{urOGua44nB~6 z)Ly_d`A=b1C}2-x2E#e<-kCiaZ_ro|Ud?{Ur$04y2mlPten_b(XtbWA84Qi;{5kuhXcajP{N&3is;8%uq2ZWq`=j5)p`_f=F3kOBW`F@n z<>jaQha^rnNu+d?tXRWuT(| z&I>Q>7(#F3#jPxSXAH0yepxj+NDZEg5XLD(G|)z2xTiARW{gzwZ9+h-?)={Y{@( z*h?vU_>X#C)udp&1mG-4v9lWzjdJA4+o5J!fEw;VUrUd84o;J+mz3vbN^%x6PkW|4 z>08pb4b3#sHy^d9+1A@Qpx0MPD00IyUdy?(Af?&m86lC!5$02Jqb`&>8Xt<9>+;ev zHWi$V;I%27_(`-8w|eW*i;L<8oc^dM-#?INr&=}ow#G-+7oN}(@lS>jz*}YKXdJ3j zM58#r8=Lqx9-!r(G}uaJ;AaMu@Re3Lq?0MDTfVb?Dx0#gQ&wjjzbT}y_cHY5$ey+{|{aFr1WaLA$lPf(SmpYb^!+01rGe3d!2A)BQ#+UzY!T#FZlF|C3GI z-lAzfyFQvC4|2ykpc;VUWzBG)1_G!7w+cV^+tEgbu6lRKqrk`N!ef2th!Ts?WSW=y zb0+kq4ldQ9SP)4P7EYSX)R+)wTH}p!FXoAvrWY{K z*Ei7l`Bks}U-Vc?#7P;vZU>kKE-B5;gta73xc(mQW-F~7o-u~7d({Or9DM?H_ZK1p z%IzEGe9z_Iac;_`l=YsZycgrG>ykoy!d41?`xt-vRw^~pU}K^Rf-sV&xvg)lEO zcmMtLT^f?D-0nV2S|j9gfU9~7pvUv~=5q9)0zChVt+#-R<6E|e;{*sKL4yYg?mlR6 zcONXc+u)vr0KwfYxD628A-E4dxHGsrLGm^E-TU6X@BguywP1Q?P9N#6s$IMG;kgI% zmT=P9J6akLl+f^VQq+^NtQ$|4e)8UDNN<{W6zfQZc&EqGJVpBOox<#=tQtceDpZv?Ru;H8Fbd&1@hDl>AuNt>Ed(`@QaQq?jFd-S>$m zqk(QTvcDQO$V&(oh7su9c=V1#OmB(pGDV%P{G;#Rd5itQ$4L-t_R4HvnzKDl{wBnj z&!(f+O~Szeq_Jr8K{g4Y2GVFHchT8>!;q9}RW3Z6X3ZJK22GND`kEVM0*j(pYj9PY zV6W6*6c-6t`=CXvqQ|NyE}MSaj%JM*ERvmm62oyG6V0!OvC`7ZSDXaLDm1f*o2AT3 ztucI!EHf1{H1s?$7w3R)!#3aNNBPRnVY{VzJ0`0ju4=6er%4rA8LF&?`mG~KdGo{c zHquBKwWusE_x9S`*~~Zi??^P-F8WwMW-NA$Xj1*i@7;g(lsDejEOj0<+aO_Ezf^Tq zjqR#8n+a{I4CvB8uV!?M+p9t0$#zM|ny(4{XyO+mLN0|9;*#I4ES zptSc0)jNTUUf06V%J4^?EvAYf#GpA*iZ-n?((-m3e_}!rreB!apom7-GswBwLDPk;-;J&i{}|K2AGm!+1Vz1@R{(YBdL zyy9v|1JROuHkHzhJN0cO_G5V`@oU}sjK=h5b{7w!agPsL3EL!Ek)-02S*3ckw=Ycg zcn*CTkUwdm!gntVIe>09Ph~fAzXWF4kqc4adleG>CG)=DPC%#pT$*H4-U!vc{w`CR zm6Ry8&>&~hZLNwWI*dX$pH9NS6{*r|w`dZn$nZO)G-Kk~La1ISilt7xMiU5kF~|;UC~vHAON^uotdV76)0=VM!83b0LWUrqEWU-Am&OFFBy%i&7`h3i!D5K%j4G#MOxtuNVKlZ+ z!lmyTj8^f#G>~fo^YDNs+5*x{+ec4cOdcyS|I9T%%n5EWWCt(PTR;L5=GfVg=gw5x z*BDZbDNvcZ*{$^pUFs6(u^SmVLP-wn_TN#kTuSWHSWC#EA#R=fEt-E?wX90r$HZMk z`{{*H%*%zP#nUgn)nIczhWw&L7SlKSfQqp3FR|%*yb~WR-XblNR-=pWTL{Q_L|+6P zP2#h*P3})VK}5zYPDi_1*F;>hzVV13_kvH#D^pFY4})g~D%0VFCI$D`vuAm5zD5vA zf8(w>0N|b?WgtS0?R4mIm9-ph%AZRf8TS)f1a2kuki4NbW1n;IcgA-NhDe?z5c#-i z8A_lwyERr+eW`2=OU^O^lN4SvnEF=VKZ#M>C|~y8FStJrWs#}rV^HUW$45@v`+O#C z8V++nFrR!2;HlH2#$YJJu5|38_gBO>lMbJr>Ud?$USd;~Q+=rs5gc0kaZOe$r%PM9 zjI{=?Uq1H1(Vk+?Irj`qK<=*9IKJ?Y1-bdGm|qc)+@7^NF-H&hS2${NO&c@H&ed5v z#4j=nLzWmbQ&b&ON+$Y)+pUHQ{4-Mp%Tkl-#;2dmkNSW&mx(&gx_-Y%C_hMiQdw4= z>$z_0J;i;N?lSv+SN`TZy7PMsW9m62Q{B~Hp&-MH>RS0wM`n{If0_`e5ZH0*NHcYB zr4$Y$7!<5`3#$QJ`AP2hJyaa0?udc38V8FU`yoF~XY56cSReWW|s;Kx| zcRilv8)DTB@b!jCMI*k1=Qu-4h9HYGd!vA=cWEd7l7m(rV4<5VyU9M=6OTKS0H=lz|Vracw};h$%C;-#yAD!5mp{tv>V zL|P!8Z?eC8en0;Nio)c85Yc4-n*2_^sUC1t$5soAAvt5nJmws5K)7>C(CF zMkh7cen9{&hSEr|3q&1T5uPeyKcU{N>Cc?ZQQk6DE7Med65vO z=@%ZEGsM#}_DncHeT(4OsP^U=Sf84mR>Vpuv>qT>9n2wYrUGy;I{f-54!Al zE8z4twi7Wm%QKr&RH}GBKte)BCFS-#^(af__DcHO8YWR|-g7llfCC|^vM^cfoTX<` z%uo!?!C=s3s(-Qexknkq2i#fl@qH|MriRw3DKvilfJ;1glQ)#nO}uSuYkfd$fV$tG z%qj|-?x#5p3fF&tQ68XOAQ|-^siwcU%EOKGkgWY5sO8^i%R`Ft;rIgii@`jIW<4B0 zVg0{e1yr{FeGvOYW(&j4-%;TMrvaHPJ%Li~ zA^MySI$!W}Z1F@=%~N}Ok%Ke3!ewCHwM)Hv{D06J&QoDM^>%zt_9`!?6*RyifcCh&o|{Fpt# z#M@JgMvP{UOnp_%2Ts7`cGlXx&^*gJjgl3EqwCz3Xlu#_GwLrvz);RxD+%mN&Fke_B)C zY@TEX+cf>o`mwIr>W&{&U3F3M3k{>Rt0ZBy$%S|n`!vjIwVq~hWx0?Czl2fV{XV>= zsV;1;qL3Xd_r2pQ+Vv&z31^qpY<3;|H^3~%FWsA4&d#l#IkuN_6j^NfsE3!r)NRKL zj`rkU9YK`O$ZNCx_3bN28Z4rm)%SSF!;W5nJ)M6*b9WIJNYTD6_R>$;_i*l4>&hNK z%;%LEO+JlLc2M2sq_Dy`lXJ{KGObraN`nslS>#Wr=IMDIdrixgQb+epLwyg?*lL_> za8Nzg{{dLCE-D5_3nz`7T|`nVrfv1+vP+D|v(O&DP1)Q@Cq1_m$?2)Zm-50*<i3<@&P(#aQZOzSpaI&*=RFCc`9I(7*v@IHD zP1&s~E2S~^Yn<`mIY~T%tYMK+gVe%l!K+? zQyBXxn1Ntp_HYngmlju7AzO)j9#>mGFM!AQ)-NqSz7bBFUB-@)mux+{Xswr~yTNFR ztC?Oa)~5p=pZj#)K*AoAuhv=eJhNr2A8B|3#g;R!=kQhKjE7k8D}m{&BILD#LGM084GCW4{#YZqfUS`UGR0ICKt8Z zTX~7-Dj_q8p6lV#)MAVV*EO?yol5(uJikqDI#>SctNOffS9^FrF(1R#m-PDD&dSEh z*2XU5x*L4@9}i-;{z6c_O>RT&*ZKQU)6u>BXY_En6%)aJ&rAn#5oa+ehM)@DvZ63; z+Z(@LU(b7V1w0d128Mihk^-h`1sWRw%K@zFNMw5gCS$jZa_nn7A=0oOly-4iOyu@?KO6jXf&n|sD=wbLrf~xPhNQ}=Fr~a^vcfr^ zZr0*8#UIStnUTM9(nGyT{6k$GOV6rhs5`zWD>yhH$u|q&58|j*hia@&oMi1Z)Oc<) zz*Utr)%BL{-;2nPscWliNqxv|(1Yy5h`PWrw344Dsb%g#OCc!U3 zA<+KBZ1=G*36IT0Kto=+ufGNtd)1;{Iu*IORcVQpQ1k1DNBC`Z|4Nv^Puu#??WGR8wjm= zbN*t$xAD=;?%74g(J4p-A^+f^=Dd>tCv{8Bbw3`LkpfZwfk-_An}3;QzEb7IKKlej ze>X98YF-b|*XxgeJPTqXPrLAiC^nYF_5MN?IXMk2O=o`}XFcLzyIao*r?Pwor=WPh zmSfw)3gJ(5gKAz462eLMP>(Y3G;;H!VUHtpnT6&OymP84Z7!r}Hz`hE#JRcCz@Od4 z5RoT*i83-dhv&jGG(NrX>qALZHK&i+;Qi-Ex4D3Su8b!Y(xU@KP=m=!i&-pbA- z`F&q~Q#caC=B0R-J|k`ptIvu&$Ea1;6@f(xg&!V;hm38$nE@| zox_i-J9&o7YMizhb5cNeGf|x3xK?XN9ZYvS=7Xlsxz_*I$D*~F+3A=o#fWydePUvh zcVi-fFb>=xxE6Usb_z8GtK_8TPHr2PVefM3nrE2?$}lYn8eQGaI#HdjC8QKcnTq${ z>|9q^VBLClO?9k_ZWG&h&c&E$7(Vg211&pk_;~l+dP-gfpXxZDKaE4v2nXu#WMQ+7 znlzM-+1rqe=zwr9hgu;){G(@ zTRFjNDGS1Vjoe!0Ylb*l#Qrdu>+drm>OAv5(Y}`UKPYqBX4xpUeT5? zbl8Slw#QAJE@R6W?r4Zn1eIO z-PsXa@s~TL@C~xQG>MT=oe;C;&F;kr%SqjPwUTgAo3Y4Un5qu^Wv6mJK8w;G-(*yo z##JEWn4GepeEvw=$kQTZ0!YKV3nX`t^ zjhn$cBq?L9g%0g98tAgHE?&$hZIOZJR?4&$K@fR$F}LBEY3t@ijSHlhFs=QG*oEkj zG}+L-1k1F#)Czs^u?{%g%Kr@DPh;0Ag~NlL+gz;ROgb^jli)4VdihC@z@)gIXp+6! zo;_S8^pfUZbGJl=Mik_7<#X}xGOV)nAhGN!EXQ&BJH*P8X%^p+{#p4dF#b!mmd%6< zvmcB;jo)mQhpr4&)Wi&)pQA@~YFibTsYkz%a5RxBkqoS=Ibo*Lkc)Xk(%NxAaOv>MdKwU@+(YCB@P9;$gu~FJ~+qBv_Z*K?hq&5DUL=l^w zRdhM$IeZBSKBdftl(HxRB5D>iyx|IUj}&$CAeQyvFO&uQ$Z&&}K;4%)zv0w4F$5NJzYl$8+&t zz!UM`VZ=jvEi&HOnNqHWI&USrwfh1Y zV1|x1X6Nk;z&S^0a9RbOpI-bL*?^FQOo5hv2j-?T7y z-g5$?qQCJ3z^fa@G4soo+ZPK|JtMo=8?1xN7t00D52k2We&9DQ8>ne4nIVW#=2|p) z&(JSCH2{(M33YpEr!uF+;tPbfJ7DK6{;g^M6^|M+3$JSco~K!C_+1pp z6g*05kKrPAcs9F}HcciuO3UnUSnBls*+YO=zZO>A;8tCKFC{nmxSvtmJ1zD}Q3^)w z(70?vI&O{OObaU7(2M}*z(T1pFM)TF&yJyH_D?67 z8fO_vVl^B7kX2XznljDwmd8;5xf?N+qoDaX=7}47r3oukGO^3+L36_YkbZBttLTX( zwP)vW!38vFtaXeLF%k^(hrega8sB3)1j?JRVaSfKdXlxIKw;(^B~>>``8(r^=A@HF z56gnn9>Hk~i+ZaP*5A@=sx_5CgW=-%B@E+>k^_=z&;RCdXLoDL zs^)dZq+Mbcq_Fp>Yb(j%ZF<(*FLZCFPdV1Qixei5f~YO>19rKu-W1J&7S&ZrM0cZfcq5G5(O^^OddtZG@e<7k zQ~3jH3k+MqG3ovNT&|ICX!9tW^Gia9#vfpx;M40vixZV^k`LU|R9?FL=D{U-VTw+8(SxMHhC-z`$Eq$n}g~(HPmI&zL(+bbYu)N!7tjJz+nWk zkRH8ucC^N%QSPi*a^XljO0xPzC+v6&*RRH4`xZyeel>Kj7osQB*3EAe+=96meBB5431-%9TmKib(g0$$Ym|4}j z&$JIo$T0HsPH)Zav1{m+VJnZOHffuzT~iPs701Hi6GX*O#$#1+IgVSW^Vt}Nl1;zO zrroN>--~ee+!V$ckE}w0U_**LqB@_jh1WSlLd|=$M!7}=(AxHHfpSvqoH#bnmE5)1 z%CU2JSDl=aybQFk{x}F{X9h3e7pYC>OK+nf4x!yJ&fA~N&&dAO$<(=VWi?f$QRd?@ zFDqv$lSzIjM%&U-+Tssr@eN}YJU$w=0ewVsDYPg9(w3Bs9g}ftlhIf^MKV?-y>r(L zY8w7*GdfzD4mRCNR^MK<*6&~OsPF*XaH&27a(jDQ`s7hwR8msC$w0hB8R4V!ci+n~9zUuj<>w~?o=%UBE+0^+ zzaM(A9>5RK&cD>&``bt#UU*=2|39a$$8UkUzii-Cx|5{MpRKrH|=43Up&#+PS2Ka!RK135Zy*K<=v}= z*Eb}*Mz_7&bsrxCKz0!%V0;j_fGDftDycYpw&_p*%WIp3*oFm{wDQULP7lg_K`Pdr z2_;uH^5P$Z^5I)GEdvq}gvd1uNgafRp~qD}6ybJKmUUus>?x-Uv}NB`_d2NRvThvf z{kj4P6Q@R2BDZ25|OA^YhV{Ogty9_MxC*MYo=1jLXU{~?ojaT2;MY$*}$E+9ctw0iMD zPr~uxQJx9pUCcU!JD!c|*X{)@t5wX=ZiUY321DjRL;smQ)vxZYDe8XTX9pKmJ7*1G zy0Q(egAu}<-;9TEAI_6AVJix%iWRYxZrwwz1P0b!I6|vZHBS-3b}Rkt$`teGEms_L z^TAs4E290ZJu!2}>c2Hu#0x#KD4I&uPqIv=kox+N)FYfe%&EA<2dx*0+fxPezfp*C zYM9r+rmk|7>TnBxjz&7V$6SUQ*i2ht<}mXg@cf}}w8aO52Th?20^;-qCh8X|<_ldY z%E``sX|g^R&#-x}U5^uDzsZ}9KNe%zY(k03wOqmYN$Wojj9YJ13u$T?ahn0|{P#8X zeML@g5PP(7`IecqIThQSUK6$F|Y52#N5VX*~661CJ%Y4Y)! zP#D^k)wE0(=g-ZM)|>=0vSmr3I5$3Mhd5EQQ3lcH#^h2{gi$u-Q?8OUB&!Sk2Jp_h zcLZg%90|$I5IYUKf@oREp2KP{#P_}7?~|CWOr$on9--mi3Lv8G*yZA|#NGzn%QP_g zny!mr}gp^7r4( zT|_&GgRykSFxRLg1%tD`kpIy&ji(Cnnk-St_8kf2PLKB61eiL!wP+2qq0 za^m9YsMq&+C2jX7&1V4lifKmA*n!ObDD0HH)INJLdPedN>Cr_QeTy4sj{yHfcb-Fa z#hQI#X<-l(c*FhF-_#=Kncw7$zv?KVqkkM5S%u@O^NJb$Jk88oG*4PJW12R%mEW?I z3FGw|E>W(Ct&ul=yt678Kn;8%7wvaB^M!7=l`$ZabYyp*JvbKr*r}yIvkYzzXh`z<$Vjmt_yTykgyP38CKgZ4TnRYDdf1gru!5``Sz5x>u&G;B zhbM>Hy4mlsU35O43+cf0_PH}Yec)pCTGCT;opXd;yN0)F9+zm_!$TpvwQW$ z7N-{$oZ_-HVDFcVb;R3n+@;dc;5%cny{1t*=RwqgA1Y4eqI!M7-Q$l8b}=*S2wKje)t)Zzj?ay~-Jq$aQ2EYA@*|&Lj^b zoN)WQ?O6|hWh5J#71YA}-wH9l`W04=JARj1tGKg`tV?$5Fzt zD%+Fyr^V-O_vk)^Su*1?@1x;F;Z>5+wfuXvAXir&Q@|>23eiyU@&enaG#r=ZugrE~ zBDr9;$DmpgkbrzmT=4sq+sP|;Om&_-`W*PEaFZlt6p4q22Mkz4zU|1_`%$_FtNPc9 zKA7|WyU)tsqN!WFfH^De7bNR+u+-Aqs;}vIT;(1Fbp6j_r<_6`K6Rw}j&fu$e+yxeYz!!w|`r?xVKYo|vtx={nZencXIHiaK3`Xuyl zt)3v+Vm-3_uIHZ0&3gou^XOJP^nOs$_uGcJZ69&8rmBJ}xE zH?vlh23N--EOrTp91>!xPZq7qC^plzF>}wyzdDb`8O3oIkLb>2|8Qgd*tYcz;zDPx z0JG($#WI)}GIX8EZHT{t6vjy5=p2tvI4y3NNYBIzGV;q0TX?F8;Nps?^;GI+fmRQF zuUY^6;kU@=EW&TNu^kzCU1*Q^GiG-p!`Js@HgmziM;qnC68=-^A%qIbV_~w~j@XxJzrjD%0n_VFS{WkKCy3!LQBB*k|^3cN=G{5j&B;$zBi1 zJRwKD3pgj!m_D{N6+LUx+9MyF*hFCts`8?W9 z9)>>gnURiRArao6v7_#?u1Q~NGZGGjZQdfzoJqzanFaJNGd)PnS(~6wEhOhR*7lPoy4UDB$u~QjY&a%U!i4bmnDb8SzgSq)v zXf?Rw{;Zf_u6kcwGivvRDP>;#nb$`@g&%I4Ks=%?^Xb@secRQczMJ%+($S zUBjb1(o-)b%2I#)00ba~*hL;+4FI}K6oMHf1}`oS7Um`=&+CZd0VxiVKy-eA>q01$ z&tbI_^R$HE-MjbI{Qu;k|6+X)x#u6LJsKeE?&UY90<{mRi!U-e$I9rAZr>fIT9mRo zM4T=F(Y^6u1V2%=;5~mLq=|$V!3>*bh*DHkQBhGJbq%K{Y4}sXUG?m6Ih7``2=w9N zK*(?dDLdic0J(9Nsr&N{T0RhYz_H30@d0dswwr&TfM_NTLtTNw2tIw z99U~rX>DJExL#6OzW7%~fJNN;R`n;{?ChbvMuZ*nobG@?NyO=o*pBVtC7Yc0`La7u zwVjJmj?f#yH@=D>>m3JeH4~Hi+*Ssi%p52bGm_V1>Xei_;nH!!w)L<%?Tn`9rd$R6 zA7=jI$V+mLx3j2K*}S0n(Y%TMn%&Tn8VWdD{a$?4BVH9u)P#{+0rda%yE7*Li?vU^ zTko_!9mH&gY1G(Uzkv2H{^f{Fjq1<3!GQnu-c#>Wdka(~7KTEhUs-vT(7yQQK(<)G zAqz5ExBAwbuL+sf!d1K7z>3tnwGdhu3vG)f{eA z3icXl%(i}>jFnV>{d8tz8RA{k?V1F|n;s%%#n3JiTU&J!H>W!+_@le-fm6u4g?UZD zXG6BBclJ4!&8gcs{kH+FFMC2%G()t^JnA!KcfyzaiK@c`A1dj8kK_iz`wik6nBW2| z7k(cLY#TvJdMhzBMPcRH-8hB7juaJr(ih_A?1=esDO^H3xKSA)gg%6mVS>-6lJr05 zj~6GhbjX#J9jW*8M@P`r_n_-vJ5i;^p8c?sfPeY?;YZ;X#{2LtePs-uBsnCku2e_u zi(Z-M6R(dWE=JBjCdJ*Wg(~e3KSwT$4j>w6Ws^T3v{@jpoqs*~=1PJ#P?w}gK*KO> zw{#12(tCY}pk=v{WtGQ~drC-_*Yvx-oR}VF3wo09l!411&4sDH*1;`5GTw1izBoB~ zW27Q0BI{2})p3qYKmpc`q~vosypJZ!TbA`dDADt^t~^Rx7*jWoZ_De?DEd(@k+M@q zL*S^?eVAn%mwO4gr+6|2bZzD{;$ufY@{>#FRj)Lt0~wTSv1^Cy1zw28vbju5lQ~<5 z9nlb!WI&BwDeThW{q^}VFu}zSzDS7JItE4FSXeTj_XZJ~5a5uqG?f+%_ysD(^?wWRME~%f`i}P%}!j%_|J#y}S z+klSLeVBB1%ET7F1tVl6A3mPCTz8QpF}4y%6uhJ}>oX+uI%=Tr>q1x5>{V=c$gu+{0_v3_C4<-?4FJp3Bz#_Uct)i2uBA%66U~JY@?!rWs=G(MJ z;){4?JQGB-XO(59$ym-k%$xt0>-fLUcDX@*pKvAn$y1}BJdHoY8brW%@4S^ktIAC) zl@h0%!FZG--(trz3`kAWIdp%?vAk7sn%U&h8zsy)qN^6{*;$l)9iJ2&~K3Qj!DP&%aZvgHMbx- zlH|l|<*S}8r)jh~4NHlLqc}Eq{>^mEzSA5C3YS!=Cv!irtBN-N60OS7NYXeqkd9zA zA|qAzkNEn9LClltTp`rLouuC&c*3Ty3J(@o0O=0LSE&j|pro+^u}F|K=by3oIhsw_ z!>FhLY`m8~1Lg(&WvY(ytNd_7EIW;OPJ5SHB^4*x-QH7mb#}+o`2q$RkPE+ENK+2% zg_W~~G=+0Aq($3g^T2?H&LC+_LLqN3%H{jp`DjzD>*8L5#>SLV<+J|!nJ0+PzFu@@ z+`|e|IzA;O+0BJJC~B<(YF|!d&UF?DbwV|6i-`5~+FJSFdl9jIE9;0aHw|BA4Us>= zops;z2~p$Re!7=uU!o=;7TQP?IM7t1V3u?XCLjo2WsS3O7XcioJCwOs8|;YCG7^1R zwgd>{J8U)i(VzC|JtwXe!Q(`EML&1jr~@bR&!cuJ609`2tu^y2bVfPCZaYa7z7OOb z=&;C;#$K2Oylc!b1Ccq;9bH|&5lG6+_x@JJ;xZw+I~`C77tXi-@hK~s-{VUe;V8N9 zYbss)rW6tt#C+-X?9}WSKc@v<;NpVp{=0WKC!?NV3%_xno0rL-{qBhNjf~2|FUEQN zSIy39s?L}dcL8GDYBJtGl&`n9@6FI$YEH#pn?6Jshbuhm@_MGwxxK;WKmscxmdmO^ zKEC6$1AFW`8gL%^eEq@lW`t6;ZWnXWsSu6C8wdTG@l_K6u{&8DiLH;XOnCdDGK5zu z`P)9cQm9iluKXmz5^`7Eat0gH7kUajGWJcNhy=)!Cr|nZ1_+4XIfL57YkG?C9|0g8 zAdNsvyYtrcJvVn}L+V^hoH0N2jNrUMC{Awca-uR2$k7JMPMJg7<**!=u-i-Lv|y zUo^SDlUtU@ZwLtT z9{iHlG)SK8JWI#G&r6nlv=scJ+K)_Uufy#-xsA#iL%76wDtQKDD~gSc1FT2rY6s|b znyE5i&zJi&(DTcVJ{QJ*wIe6%KQtC4`Guhkk}(jcr1MwoUmF^ZB#WOCYP`%om#{- zxiKI*ARsz<+yY<1Y5Og$#8n+X2I70F_G4(UUtaN~8?_|V9>J$f9-L zV^ei53*UxvMik(s9WO)ji57b7Lper+c!OpB-x7?ItMNr<|IOV*0r$Y=&v9wO|H%DnXalX2JScS$$7wUZe*>9bi9Z;*Ud^9?;Z%Bw5#s8VKh zM(dq5DF{Xj^XWHz$|v^hN99)PMIX7b#&r~hBMVgcE z8wV}CS*vV~6xylpos{A48L%Ic0CP2D+%|-KIz(>8UcOd#IUNUYcKqX0uSNAt>* z8|pHEa5~V+g%RX=%1Y?Ta74u9Mrk(Z+OB2)2_c*(>#i=8xI9*Y#Rl?319caf}$}-$LZeQ+UPVPGtThD#f5$MvXLXpOJIT<|2 z^<~a_xv#mrd$1yET|;INb+=1aS?VS|9jLgt(s`8qU-cLY5o~NAmg%~VUPQZ?La^D{ zvCY9^Cdf!|n|M8pL*8!oH#TK{W1d;ig3=q;UmYJkPp@R#&fe`KZjl$K&*$O`iMc77 zuvo4NV#z(`i6_IVgBDaGIbh;Syj%UtvRZ~*`aBimX;}uImbVq* zV>;a#(SdS6$wt%Vk0a%)U)jpA*tH98ntVaqu-gr*TLLi?Gi7N{5H#K>IRwg@j0shf z^UDqo)GSIC4U;or@UZXT&B`NQ=#dAhP#yeiVvgO-F#vY4a+Nw2FhUUqRt9b+}x0pb-xVGaw4JAKReJkHc}WwE<^=j>bXZrZ3|bFk&etKVjN7Qv zr{bJ=XL)H@J$pz6gy;-y%6+#KYW6cBra@}nJDV%a(- za4^}N?0>WFB}m)Aid)hknq;SPXPKN&74jhBtaoSZ6s-!zlXSr^O@S`HiKh=3DTwA;pm;Bs_&<&8+ zpFUwVxv%gldWQxKh7a+(T66E{ak+vBGPeA^`3FCWkI#zBfIWRVWSoL-deafIytcm8 z5K-9v)eP2PY`%Nyl5_C*TdM}y07JXtN?{m7aoJ{7*cq*(>ub6XQsdmSB}wRvuCu`1 zUq)EKXW!m!ex0UPYBzlp4p45rYH_7DKE?_4bQ%Oll8JUnDi8-q&da@XwJXiqP zP)Qa?N5|(~^ni?V7lm_YtYLI8Js)2x*6Bo{%2&g5Ue|D}7_4ttr-05iX4l!}Wvjzl zwvevZOkqT6OhYZ z;*Z1`FW?N_^Dc_EXI-z*(Qz0lgW^RQsVSwxDR`O_DLetqQ$S~&4JQU`AH9nL@4ZCO z9vwAhkes3{MyoxG)Q(E96hspENJ|*Eh0@ri-F6lBn;10t50x^7gA?G{v_N zDOTp(M2Z-S;`JtDV`Ew1@&mDgvBIz-pHcdM@QwKzv#NjSXePSKXVdu!Z8^0ewbgS&Ws~O5jtmhA0pLC0S*f7_hQ^y&MhY_04NwqFC}$hk}3(px~+~76Vr| z`c%o^p5=K$iaiUJCH9J;ylQ%T7uE!AyP0E_`ddayEwcp`m$;6r5OS%Q zSz^HR{}skDuh|jC!8h<2NL2w2Jy8AeKs0;!3rKDNH8Gp%v26AxW#wO?(MA2VGm|ON z$?j`IXPbwd%8@GSz-Cmrwj{b8%dD_zSi(sk34wZ{W&VjB4l;S@Uy+cBi3!!XSQ?=O zPb#uar|voY7g(o@i6&TfTvak#ISR$Td%XM#Sh`hX=AJnphcBzOXp2r+(ShQ65JT2<@-?K3M!Oz;VJ&#vGh} zjQrVUgPBB$<#8+<_9(InBa!#?KOMZ>1{2R+Lu`3sp)2$gMrVSM@9qq+7sU!@pUnV;9KP+2?gw!-aXAlx(no(s3^YYlP zC3>)9mS6sCp%B5$UbmkW^@@8N3J=Q}&A4!=*!#ptqt6drQc2Q7x%fX=9$wyFVexFk zm5j77Rps{QtVBn>ZBwcHE$Er1_jbt?&*fhbP!~5nKHt*%$q&75a#~7YGcXnt&SY}m zJ}(gF)Avi>4e>qBErg>GK6Ng*t)o*u3Fu(Sp@q;C{(I>arszhBfu3gT$ok%Tfqh^c zZXGV+l=`$^R_xYLGki3!iOwTWT+`}uZlgaRwwXStYVbw%P{7rfs)emNz(slb+i*~HMXnB-kA@*Qn|oV zvyD?kaPVkOHFZveVSgemxp{&j`muhzGT#|`ICaQS%2K9F+3%vEuBRV>jrJNXHRoxBX2JsH zVymU(N-M8oX2$gTa{YzJg;NP}(j$$!@wmS!V=$LsfeLX9H@0v4JZ*55G0KLSeV-_W z*G-hVpu4i$WhWZwY~vt@QI9F^psGY45vjl!qAc7s*TyepYrc{|fW_y?C7wSVd1Ajg z@U{@^P(XKJjYl80Bm{Ehh0M1iyg)iGGELQ0b*o?*Hr*M-Y@2@vpGbODY?O|Tp_QCc zl=5l+-pYu3|Mv1L%6C2`7^7X=8CoDrxljy!E&pFuO()@csG1*IOQ60RKT^vx{*a9e zJB7&hDvi*xKJD30R7VkyY7K5GZ*1JA6)Q_kVW?Gtxfbuu^V6GrpjY`FFiww4&*kh~ zuFG%N6;JEIY7$=6(HH$B)56_WRtZK<{jk`)&+}n_JCMZcKU~5qH+7;poIuW_JG7QX zII6R--OKU^c8Z8(+O*e@@gxy(qkX(s1lRkm&(ZjKtLlwP(H|x6* zRsE@AyzM^x;<*09JAQ`!yR`)k@f(XYzb40vkNF7qHxEl;VyP<&Gw)^fm;0~RkOMy5 zflxY|A9w0urePiwX zlW_kg{D=gf>&Nz)_bY;5*mzu@=~!(ag`hr^C4L0CDxw#6iY(gueMyzrHump(>&}tU zf$fpt`*UX^N`{~C;FGOe?+gxSf)>6v^pm;MZ>!(%1MQ&=0C1qcov-i1y z-k+)e6TBVC<}~AzD@Q3(z(96udC!sQdd&}eMoo}Ph%Z&4dB*mkDkjOMY&lhh;Wk;o zY>(sa0Ol5)GmdD1tklxe<Vje>wMG*XdR@-xeOsVLX$ z7`qJ~i+813Yr11i!->M9tWtyq!A*I?c)n&3SdFkBZl%se5ZFKY_b_wz8)(>SWwMsy$?pn?ZSPOb07Wq#9Qy0J_XdpQ zLxvX`yG+blCd8SW|CNXRYuo=GnEY#XfByA#<=(LnkilY#{F|3CkWl7su-N0q-m0pcD04=?%Oy~Te`WBfVw{Po}e<30Y{ zL*V~-kN<;V{m+8*ca!zsB?|w4vmTp%9AvycKVO80x-0#n3TSM+B_4qie`ahuB)r#m zAGy5T<8;5+$yG%R?!o>50jK2&T0H(CWseRd-Mg6*DBS5>->OiZ7DEBa3 zo^}NxKtr&qvM_(P>P-5jaM9mmMMYU%-R8g+PL+a^`sn>mRG5{GOlUh#JuYRdOKINR zd8nnyl}1&?kx_@c~X)ToFhS5J*`Ir&-2k`Ud1Ub5#Ky-sjta4i|C!?XN$t z#w_!2j1XL1Z$_V(!vs%{@J$>!iM_pv{h$D`1So3zmwh= zCg`4>UsifGE9ndoZE<-5b;>ro^lwJaqY+)E9%85 zgN327OCHgreM+&swV&U~FQthFHE%kM4bk#*QSCjwrqKCU*68wZH9*3 zz=Qk=0dVSCV|DF5$hvv;++EHZPx#Wov%Y}RJW@{45!TkzxWcx{*xiASu5s`YzJcSx zd;>*#F9EaM@^EWZE&dFTBo=#c*iMLUBl`3+~ zSk-2>hI>D^_@HfcIH86%>nGf$xC-Lqf6;}tUnX!b{^9X(_F+8|c|NtL8PQ;gQIH6T z&C#MkR}|V~%>KSIZdK*G>CA~j!mD-EZ?71syZi8{2Y9(e`_KFYJK(AShUij64N=IvvvosJ%XLacC0 z)ejh#h8vaQ75o3H_xX{v-2Gl_^Qr>gpMWa!t`S(0d~RMY@DrcW88uf|*r_SS(hE{Kh$ojDMeiHz*#(CP~x z?#>=I>0FQ*_P}+L?VRKA(5>=6faSm_$%`QsL}Ho01d>zgEy@CdMT`;>)TyrjN=Hey zlZ1%asV|+O`8VdC>^UY-2Fx0)SAMm`a*yilAa5*ZY6DWe(YArM^Ahk8E>BFb1bsuJhGdVd4E_Ibcuy${CgY0XcZ=1^IjtJ!VF(#JVw=(` zJzLzX6Nb)c3DddC%;) z!Doo6GxrFL@MI`)=g4NYkER1+l~pENG-QNY?g9}Ms$J_M?B-1&70ak&@{=P4lfQMhB(SCTzA>K z!DJz=WI^fbs-Ydu0LyCAO<#n{qe+(p?CH8RCGMWW6x>-%3Yc@~@b0@T&SQg_)f;VYC;~Q4~ z7(G%d-}d|kAXn$q`Y&NY{l9@fK_}&3PYS%M?9iCo=$$3O$*M5s{;4K(Ag$kz;)-qB z>Px>DS4E^J8Ot}zuBp%~53m{Ae%YxNys6^C@E^-+~yJk5v~;B6PQz^J^SC z`;6d)wPajVO1djdyzU98h*Nz$aN=}3AM5jiCT%WCdmyTWOXZo>N{sDGjb*)1@)6rR}Nd+NqABqu{Ac!PLiB9ri>~Xs$Hw;C?)2 z2*MrxzJ8G4(CQdlw`bq_6ld2isFnLMn960pBK&Ymcem`ThNI^zMFr6JZNyqq(m8#v z8GpHBjH|a(!(|6+#99==BpYn)Z|O-UXFV{irS$

    JS`+M#HVm;wl-a{1@nk+J7&3 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 - - - -Dolibarr doc directory - - - -This directory contains several subdirectories with entries for informations on Dolibarr.
    -But if you are looking for other resources (downloads, documentation, addons, ...), you can find this on Internet on web following sites:
    - -
    -*
    Dolibarr portal (official website)
    -
    -* Dolibarr wiki (documentation)
    -
    -* Dolibarr demo (online)
    -
    -* DoliStore (official addons/plugins market place)
    - - - \ No newline at end of file diff --git a/doc/install/README b/doc/install/README deleted file mode 100644 index 0192ff27..00000000 --- a/doc/install/README +++ /dev/null @@ -1,25 +0,0 @@ -README (english) --------------------------------- - - --------------------------------- -Download --------------------------------- - -* Dolibarr ERP/CRM can be downloaded at sourceforge: - https://sourceforge.net/projects/dolibarr/files - or from Dolibarr official web site: - https://www.dolibarr.org - -* Most external modules are only available on DoliStore: - https://www.dolistore.com - - --------------------------------- -Install --------------------------------- - -* For a Quick guide, take a look at README.md file into root directory. - -* More complete documentations are also available on line on the Dolibarr Wiki: - https://wiki.dolibarr.org diff --git a/doc/install/README-DE b/doc/install/README-DE deleted file mode 100644 index f4cb3c1a..00000000 --- a/doc/install/README-DE +++ /dev/null @@ -1,45 +0,0 @@ -README (deutsch / german / allemand) ------------------------------------- - - ------------------------------------- -Download / Herunterladen ------------------------------------- - -* Dolibarr ERP/CRM kann man über die offizielle Dolibarr Website - - https://www.dolibarr.org/downloads - - oder direkt bei Sourceforge - - https://sourceforge.net/projects/dolibarr/files/ - - herunterladen. - - - - ------------------------------------- -Installation / Hilfe ------------------------------------- - -* Für eine kurze Einleitung schau in die README.md Datei im Hauptverzeichnis. - -* Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden: - https://wiki.dolibarr.org/index.php/Hauptseite - -* eine Deutsche Community bietet der Dolibarr e.V. unter - https://www.dolibarr.de/ - - - - ------------------------------------- -Zusatzmodule ------------------------------------- - -* Die meisten externen Module/Themen sind über den offiziellen DoliStore verfügbar: - - https://www.dolistore.com/de/ - - diff --git a/doc/install/README-FR b/doc/install/README-FR deleted file mode 100644 index c362316b..00000000 --- a/doc/install/README-FR +++ /dev/null @@ -1,26 +0,0 @@ -README (french) --------------------------------- - - --------------------------------- -Téléchargement --------------------------------- - -* Dolibarr ERP/CRM peut être téléchargé sur sourceforge: -https://sourceforge.net/projects/dolibarr/files - -ou sur le site officiel de Dolibarr: -https://www.dolibarr.org - -* La plupart des modules externes ne sont disponibles que sur le DoliStore officiel: -https://www.dolistore.com - - --------------------------------- -Documentation utilisateur --------------------------------- - -* Pour une prise en main et installation rapide, consultez le fichier README-FR.md à la racine. - -* Une documentation utilisateur francophone plus consistante est disponible en ligne sur le wiki de Dolibarr à l'adresse: - https://wiki.dolibarr.org diff --git a/doc/user/README b/doc/user/README deleted file mode 100644 index ecde765c..00000000 --- a/doc/user/README +++ /dev/null @@ -1,8 +0,0 @@ -README (english) --------------------------------- -User guide --------------------------------- - -* All Dolibarr guides are available, on line, on the Dolibarr Web site: - -https://www.dolibarr.org diff --git a/doc/user/README-DE b/doc/user/README-DE deleted file mode 100644 index 336e7ab7..00000000 --- a/doc/user/README-DE +++ /dev/null @@ -1,13 +0,0 @@ -README (german) -LiesMich (deutsch) - --------------------------------- -Benutzeranleitung --------------------------------- - -Alle Dolibarr-Informationen sind online verfuegbar ueber die Webseiten: - -https://www.dolibarr.de (de) oder https://www.dolibarr.org (intl) - - -https://wiki.dolibarr.org/index.php/Hauptseite (de) diff --git a/doc/user/README-FR b/doc/user/README-FR deleted file mode 100644 index f5cb72ea..00000000 --- a/doc/user/README-FR +++ /dev/null @@ -1,8 +0,0 @@ -README (french) --------------------------------- -Documentation utilisateur --------------------------------- - -La documentation utilisateur francophone est disponible en ligne sur le site Web de Dolibarr à l'adresse: - -https://www.dolibarr.fr diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index fb69ab53..a5b894dd 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -531,7 +531,7 @@ if ($mode == 'common' || $mode == 'commonkanban') { } print ''; - print dol_get_fiche_head($head, 'modules', '', -1); + //print dol_get_fiche_head($head, 'modules', '', -1); print $deschelp; @@ -995,7 +995,7 @@ if ($mode == 'common' || $mode == 'commonkanban') { print '
    '.$langs->trans("NoDeployedModulesFoundWithThisSearchCriteria").'

    '; } - print dol_get_fiche_end(); + //print dol_get_fiche_end(); print '
    '; @@ -1006,7 +1006,7 @@ if ($mode == 'common' || $mode == 'commonkanban') { } if ($mode == 'marketplace') { - print dol_get_fiche_head($head, $mode, '', -1); + //print dol_get_fiche_head($head, $mode, '', -1); print $deschelp; @@ -1031,7 +1031,7 @@ if ($mode == 'marketplace') { // print "\n"; // print ''; - print dol_get_fiche_end(); + //print dol_get_fiche_end(); print '
    '; @@ -1041,7 +1041,7 @@ if ($mode == 'marketplace') { // Install external module if ($mode == 'deploy') { - print dol_get_fiche_head($head, $mode, '', -1); + //print dol_get_fiche_head($head, $mode, '', -1); print $deschelp; @@ -1219,11 +1219,11 @@ if ($mode == 'deploy') { } } - print dol_get_fiche_end(); + //print dol_get_fiche_end(); } if ($mode == 'develop') { - print dol_get_fiche_head($head, $mode, '', -1); + //print dol_get_fiche_head($head, $mode, '', -1); print $deschelp; @@ -1262,7 +1262,7 @@ if ($mode == 'develop') { print "\n"; - print dol_get_fiche_end(); + //print dol_get_fiche_end(); } // End of page diff --git a/htdocs/asterisk/wrapper.php b/htdocs/asterisk/wrapper.php deleted file mode 100644 index 2f5096f6..00000000 --- a/htdocs/asterisk/wrapper.php +++ /dev/null @@ -1,216 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/asterisk/wrapper.php - * \brief File that is entry point to call an Asterisk server - * \remarks To be used, an Asterisk user must be created by adding this - * in /etc/asterisk/manager.conf - * [dolibarr] - * secret = dolibarr - * deny=0.0.0.0/0.0.0.0 - * permit=127.0.0.1/255.255.255.0 - * read = system,call,log,verbose,command,agent,user - * write = system,call,log,verbose,command,agent,user - */ - -if (!defined('NOREQUIRESOC')) { - define('NOREQUIRESOC', '1'); -} -if (!defined('NOREQUIRETRAN')) { - define('NOREQUIRETRAN', '1'); -} -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', '1'); -} -if (!defined('NOREQUIREMENU')) { - define('NOREQUIREMENU', '1'); -} -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', '1'); -} -if (!defined('NOREQUIREAJAX')) { - define('NOREQUIREAJAX', '1'); -} - -/** - * Empty header - * - * @ignore - * @return void - */ -function llxHeader() -{ - print ''."\n"; - print ''."\n"; - print 'Asterisk redirection from Dolibarr...'."\n"; - print ''."\n"; -} - -/** - * Empty footer - * - * @ignore - * @return void - */ -function llxFooter() -{ - print "\n".''."\n"; -} - -require_once '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - - -// Security check -if (empty($conf->clicktodial->enabled)) { - accessforbidden(); - exit; -} - - -// Define Asterisk setup -if (!isset($conf->global->ASTERISK_HOST)) { - $conf->global->ASTERISK_HOST = "127.0.0.1"; -} -if (!isset($conf->global->ASTERISK_TYPE)) { - $conf->global->ASTERISK_TYPE = "SIP/"; -} -if (!isset($conf->global->ASTERISK_INDICATIF)) { - $conf->global->ASTERISK_INDICATIF = "0"; -} -if (!isset($conf->global->ASTERISK_PORT)) { - $conf->global->ASTERISK_PORT = 5038; -} -if ($conf->global->ASTERISK_INDICATIF == 'NONE') { - $conf->global->ASTERISK_INDICATIF = ''; -} -if (!isset($conf->global->ASTERISK_CONTEXT)) { - $conf->global->ASTERISK_CONTEXT = "from-internal"; -} -if (!isset($conf->global->ASTERISK_WAIT_TIME)) { - $conf->global->ASTERISK_WAIT_TIME = "30"; -} -if (!isset($conf->global->ASTERISK_PRIORITY)) { - $conf->global->ASTERISK_PRIORITY = "1"; -} -if (!isset($conf->global->ASTERISK_MAX_RETRY)) { - $conf->global->ASTERISK_MAX_RETRY = "2"; -} - - -$login = GETPOST('login', 'alphanohtml'); -$password = GETPOST('password', 'none'); -$caller = GETPOST('caller', 'alphanohtml'); -$called = GETPOST('called', 'alphanohtml'); - -// IP address of Asterisk server -$strHost = $conf->global->ASTERISK_HOST; -// Spécifiez le type d'extension par laquelle vous poste est connecte. -// ex: SIP/, IAX2/, ZAP/, etc -$channel = $conf->global->ASTERISK_TYPE; -// Indicatif de la ligne sortante -$prefix = $conf->global->ASTERISK_INDICATIF; -// Port -$port = $conf->global->ASTERISK_PORT; -// Context ( generalement from-internal ) -$strContext = $conf->global->ASTERISK_CONTEXT; -// Delai d'attente avant de raccrocher -$strWaitTime = $conf->global->ASTERISK_WAIT_TIME; -// Priority -$strPriority = $conf->global->ASTERISK_PRIORITY; -// Nomber of try -$strMaxRetry = $conf->global->ASTERISK_MAX_RETRY; - - -/* - * View - */ - -llxHeader(); - -$sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid"; -$sql .= " WHERE s.entity IN (".getEntity('societe').")"; -$sql .= " AND (s.phone='".$db->escape($called)."'"; -$sql .= " OR sp.phone='".$db->escape($called)."'"; -$sql .= " OR sp.phone_perso='".$db->escape($called)."'"; -$sql .= " OR sp.phone_mobile='".$db->escape($called)."')"; -$sql .= $db->plimit(1); - -dol_syslog('click to dial search information with phone '.$called, LOG_DEBUG); -$resql = $db->query($sql); -if ($resql) { - $obj = $db->fetch_object($resql); - if ($obj) { - $found = $obj->name; - } else { - $found = 'Not found'; - } - $db->free($resql); -} else { - dol_print_error($db, 'Error'); - $found = 'Error'; -} - -$number = strtolower($called); -$pos = strpos($number, "local"); -if (!empty($number)) { - if ($pos === false) { - $errno = 0; - $errstr = 0; - $strCallerId = "Dolibarr caller $found <".strtolower($number).">"; - $oSocket = @fsockopen($strHost, $port, $errno, $errstr, 10); - if (!$oSocket) { - print ''."\n"; - $txt = "Failed to execute fsockopen($strHost, $port, \$errno, \$errstr, 10)
    \n"; - print $txt; - dol_syslog($txt, LOG_ERR); - $txt = $errstr." (".$errno.")
    \n"; - print $txt; - dol_syslog($txt, LOG_ERR); - print ''."\n"; - } else { - $txt = "Call Asterisk dialer for caller: ".$caller.", called: ".$called." clicktodiallogin: ".$login; - dol_syslog($txt); - print ''."\n"; - print ''; - fputs($oSocket, "Action: login\r\n"); - fputs($oSocket, "Events: off\r\n"); - fputs($oSocket, "Username: $login\r\n"); - fputs($oSocket, "Secret: $password\r\n\r\n"); - fputs($oSocket, "Action: originate\r\n"); - fputs($oSocket, "Channel: ".$channel.$caller."\r\n"); - fputs($oSocket, "WaitTime: $strWaitTime\r\n"); - fputs($oSocket, "CallerId: $strCallerId\r\n"); - fputs($oSocket, "Exten: ".$prefix.$number."\r\n"); - fputs($oSocket, "Context: $strContext\r\n"); - fputs($oSocket, "Priority: $strPriority\r\n\r\n"); - fputs($oSocket, "Action: Logoff\r\n\r\n"); - sleep(2); - fclose($oSocket); - print ''."\n"; - } - } -} else { - print 'Bad parameters in URL. Must be '.dol_escape_htmltag($_SERVER['PHP_SELF']).'?caller=99999&called=99999&login=xxxxx&password=xxxxx'; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/conf/conf.php b/htdocs/conf/conf.php index 407fcc36..f7d5577a 100644 --- a/htdocs/conf/conf.php +++ b/htdocs/conf/conf.php @@ -5,11 +5,11 @@ // Take a look at conf.php.example file for an example of conf.php file // and explanations for all possibles parameters. // -$dolibarr_main_url_root='http://localhost/creorga'; +$dolibarr_main_url_root='http://dks-laptop/creorga'; $dolibarr_main_document_root='D:/dksapps/htdocs/creorga'; $dolibarr_main_url_root_alt='/custom'; $dolibarr_main_document_root_alt='D:/dksapps/htdocs/creorga/custom'; -$dolibarr_main_data_root='Z:/documents'; +$dolibarr_main_data_root='D:/Workspace/dolibarr/documentsdev'; $dolibarr_main_db_host='dksserver'; $dolibarr_main_db_port='3306'; $dolibarr_main_db_name='dolibarr_db'; @@ -21,7 +21,10 @@ $dolibarr_main_db_character_set='utf8'; $dolibarr_main_db_collation='utf8_unicode_ci'; // Authentication settings //$dolibarr_main_authentication='dolibarr'; -$dolibarr_main_authentication='mc'; +//$dolibarr_main_authentication='mc'; +$dolibarr_main_authentication='forceuser'; +$dolibarr_auto_user='ksaffran'; + //$dolibarr_main_demo='autologin,autopass'; // Security settings $dolibarr_main_prod='0'; @@ -47,3 +50,4 @@ $dolibarr_mailing_limit_sendbycli='0'; //$dolibarr_font_DOL_DEFAULT_TTF=''; //$dolibarr_font_DOL_DEFAULT_TTF_BOLD=''; $dolibarr_main_distrib='standard'; +$php_session_save_handler='db'; \ No newline at end of file diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 0eef42b7..53385037 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -115,18 +115,18 @@ class DoliDBMysqli extends DoliDB $clientmustbe = 'utf8'; } - if ($this->db->character_set_name() != $clientmustbe) { - $this->db->set_charset($clientmustbe); // This set charset, but with a bad collation - - $collation = $conf->db->dolibarr_main_db_collation; - if (preg_match('/latin1/', $collation)) { - $collation = 'utf8_unicode_ci'; - } - - if (!preg_match('/general/', $collation)) { - $this->db->query("SET collation_connection = ".$collation); - } - } + // if ($this->db->character_set_name() != $clientmustbe) { + // $this->db->set_charset($clientmustbe); // This set charset, but with a bad collation + + // $collation = $conf->db->dolibarr_main_db_collation; + // if (preg_match('/latin1/', $collation)) { + // $collation = 'utf8_unicode_ci'; + // } + + // if (!preg_match('/general/', $collation)) { + // $this->db->query("SET collation_connection = ".$collation); + // } + // } } else { $this->database_selected = false; $this->database_name = ''; diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index ae98d464..5ead30fb 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -765,12 +765,13 @@ function ihm_prepare_head() $head[$h][1] = $langs->trans("Dashboard"); $head[$h][2] = 'dashboard'; $h++; - - $head[$h][0] = DOL_URL_ROOT."/admin/ihm.php?mode=login"; - $head[$h][1] = $langs->trans("LoginPage"); - $head[$h][2] = 'login'; - $h++; - + + //DKS: Disabled because auth method: forceuser + // $head[$h][0] = DOL_URL_ROOT."/admin/ihm.php?mode=login"; + // $head[$h][1] = $langs->trans("LoginPage"); + // $head[$h][2] = 'login'; + // $h++; + //DKS END : Disabled because auth method: forceuser complete_head_from_modules($conf, $langs, null, $head, $h, 'ihm_admin'); complete_head_from_modules($conf, $langs, null, $head, $h, 'ihm_admin', 'remove'); diff --git a/htdocs/core/lib/asset.lib.php b/htdocs/core/lib/asset.lib.php index be31f995..2ce62b47 100644 --- a/htdocs/core/lib/asset.lib.php +++ b/htdocs/core/lib/asset.lib.php @@ -154,10 +154,10 @@ function assetPrepareHead(Asset $object) $head[$h][2] = 'document'; $h++; - $head[$h][0] = DOL_URL_ROOT . '/asset/agenda.php?id=' . $object->id; - $head[$h][1] = $langs->trans("Events"); - $head[$h][2] = 'agenda'; - $h++; + // $head[$h][0] = DOL_URL_ROOT . '/asset/agenda.php?id=' . $object->id; + // $head[$h][1] = $langs->trans("Events"); + // $head[$h][2] = 'agenda'; + // $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 32859889..0b9985dd 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -373,38 +373,38 @@ function societe_prepare_head(Societe $object) $h++; } - $head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; - $head[$h][1] = $langs->trans("Events"); - if (isModEnabled('agenda')&& (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $nbEvent = 0; - // Enable caching of thirdparty count actioncomm - require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php'; - $cachekey = 'count_events_thirdparty_'.$object->id; - $dataretrieved = dol_getcache($cachekey); - if (!is_null($dataretrieved)) { - $nbEvent = $dataretrieved; - } else { - $sql = "SELECT COUNT(id) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm"; - $sql .= " WHERE fk_soc = ".((int) $object->id); - $resql = $db->query($sql); - if ($resql) { - $obj = $db->fetch_object($resql); - $nbEvent = $obj->nb; - } else { - dol_syslog('Failed to count actioncomm '.$db->lasterror(), LOG_ERR); - } - dol_setcache($cachekey, $nbEvent, 120); // If setting cache fails, this is not a problem, so we do not test result. - } - - $head[$h][1] .= '/'; - $head[$h][1] .= $langs->trans("Agenda"); - if ($nbEvent > 0) { - $head[$h][1] .= ''.$nbEvent.''; - } - } - $head[$h][2] = 'agenda'; - $h++; + // $head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; + // $head[$h][1] = $langs->trans("Events"); + // if (isModEnabled('agenda')&& (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + // $nbEvent = 0; + // // Enable caching of thirdparty count actioncomm + // require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php'; + // $cachekey = 'count_events_thirdparty_'.$object->id; + // $dataretrieved = dol_getcache($cachekey); + // if (!is_null($dataretrieved)) { + // $nbEvent = $dataretrieved; + // } else { + // $sql = "SELECT COUNT(id) as nb"; + // $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm"; + // $sql .= " WHERE fk_soc = ".((int) $object->id); + // $resql = $db->query($sql); + // if ($resql) { + // $obj = $db->fetch_object($resql); + // $nbEvent = $obj->nb; + // } else { + // dol_syslog('Failed to count actioncomm '.$db->lasterror(), LOG_ERR); + // } + // dol_setcache($cachekey, $nbEvent, 120); // If setting cache fails, this is not a problem, so we do not test result. + // } + + // $head[$h][1] .= '/'; + // $head[$h][1] .= $langs->trans("Agenda"); + // if ($nbEvent > 0) { + // $head[$h][1] .= ''.$nbEvent.''; + // } + // } + // $head[$h][2] = 'agenda'; + // $h++; // Show more tabs from modules // Entries must be declared in modules descriptor with line diff --git a/htdocs/core/lib/contact.lib.php b/htdocs/core/lib/contact.lib.php index 2dbf97d4..766f3af7 100644 --- a/htdocs/core/lib/contact.lib.php +++ b/htdocs/core/lib/contact.lib.php @@ -132,14 +132,14 @@ function contact_prepare_head(Contact $object) $tab++; // Agenda / Events - $head[$tab][0] = DOL_URL_ROOT.'/contact/agenda.php?id='.$object->id; - $head[$tab][1] = $langs->trans("Events"); - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$tab][1] .= '/'; - $head[$tab][1] .= $langs->trans("Agenda"); - } - $head[$tab][2] = 'agenda'; - $tab++; + // $head[$tab][0] = DOL_URL_ROOT.'/contact/agenda.php?id='.$object->id; + // $head[$tab][1] = $langs->trans("Events"); + // if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + // $head[$tab][1] .= '/'; + // $head[$tab][1] .= $langs->trans("Agenda"); + // } + // $head[$tab][2] = 'agenda'; + // $tab++; // Log /* diff --git a/htdocs/core/lib/contract.lib.php b/htdocs/core/lib/contract.lib.php index 64040757..de1448cb 100644 --- a/htdocs/core/lib/contract.lib.php +++ b/htdocs/core/lib/contract.lib.php @@ -87,14 +87,14 @@ function contract_prepare_head(Contrat $object) $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id; - $head[$h][1] = $langs->trans("Events"); - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1] .= '/'; - $head[$h][1] .= $langs->trans("Agenda"); - } - $head[$h][2] = 'agenda'; - $h++; + // $head[$h][0] = DOL_URL_ROOT.'/contrat/agenda.php?id='.$object->id; + // $head[$h][1] = $langs->trans("Events"); + // if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + // $head[$h][1] .= '/'; + // $head[$h][1] .= $langs->trans("Agenda"); + // } + // $head[$h][2] = 'agenda'; + // $h++; complete_head_from_modules($conf, $langs, $object, $head, $h, 'contract', 'add', 'external'); diff --git a/htdocs/core/lib/fourn.lib.php b/htdocs/core/lib/fourn.lib.php index c658916e..650aa269 100644 --- a/htdocs/core/lib/fourn.lib.php +++ b/htdocs/core/lib/fourn.lib.php @@ -116,10 +116,10 @@ function facturefourn_prepare_head($object) $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/info.php?facid='.$object->id; - $head[$h][1] = $langs->trans('Info'); - $head[$h][2] = 'info'; - $h++; + // $head[$h][0] = DOL_URL_ROOT.'/fourn/facture/info.php?facid='.$object->id; + // $head[$h][1] = $langs->trans('Info'); + // $head[$h][2] = 'info'; + // $h++; complete_head_from_modules($conf, $langs, $object, $head, $h, 'supplier_invoice', 'add', 'external'); diff --git a/htdocs/core/lib/invoice.lib.php b/htdocs/core/lib/invoice.lib.php index cf028326..efc8d171 100644 --- a/htdocs/core/lib/invoice.lib.php +++ b/htdocs/core/lib/invoice.lib.php @@ -118,10 +118,10 @@ function facture_prepare_head($object) $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$object->id; - $head[$h][1] = $langs->trans('Info'); - $head[$h][2] = 'info'; - $h++; + // $head[$h][0] = DOL_URL_ROOT.'/compta/facture/info.php?facid='.$object->id; + // $head[$h][1] = $langs->trans('Info'); + // $head[$h][2] = 'info'; + // $h++; complete_head_from_modules($conf, $langs, $object, $head, $h, 'invoice', 'add', 'external'); diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 49e0672e..511c57cc 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -139,7 +139,7 @@ function pdf_getInstance($format = '', $metric = 'mm', $pagetype = 'P') define('PDF_CREATOR', 'TCPDF'); define('PDF_AUTHOR', 'TCPDF'); define('PDF_HEADER_TITLE', 'TCPDF Example'); - define('PDF_HEADER_STRING', "by Dolibarr ERP CRM"); + define('PDF_HEADER_STRING', "by Creorga "); define('PDF_UNIT', 'mm'); define('PDF_MARGIN_HEADER', 5); define('PDF_MARGIN_FOOTER', 10); diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 4b0b487c..cf897523 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -216,15 +216,15 @@ function product_prepare_head($object) $head[$h][2] = 'documents'; $h++; - // Log - $head[$h][0] = DOL_URL_ROOT.'/product/agenda.php?id='.$object->id; - $head[$h][1] = $langs->trans("Events"); - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1] .= '/'; - $head[$h][1] .= $langs->trans("Agenda"); - } - $head[$h][2] = 'agenda'; - $h++; + // // Log + // $head[$h][0] = DOL_URL_ROOT.'/product/agenda.php?id='.$object->id; + // $head[$h][1] = $langs->trans("Events"); + // if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + // $head[$h][1] .= '/'; + // $head[$h][1] .= $langs->trans("Agenda"); + // } + // $head[$h][2] = 'agenda'; + // $h++; complete_head_from_modules($conf, $langs, $object, $head, $h, 'product', 'add', 'external'); diff --git a/htdocs/core/lib/resource.lib.php b/htdocs/core/lib/resource.lib.php index ebfbaf22..9b69cf64 100644 --- a/htdocs/core/lib/resource.lib.php +++ b/htdocs/core/lib/resource.lib.php @@ -85,14 +85,14 @@ function resource_prepare_head($object) $head[$h][2] = 'documents'; $h++; - $head[$h][0] = DOL_URL_ROOT.'/resource/agenda.php?id='.$object->id; - $head[$h][1] = $langs->trans("Events"); - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $head[$h][1] .= '/'; - $head[$h][1] .= $langs->trans("Agenda"); - } - $head[$h][2] = 'agenda'; - $h++; + // $head[$h][0] = DOL_URL_ROOT.'/resource/agenda.php?id='.$object->id; + // $head[$h][1] = $langs->trans("Events"); + // if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + // $head[$h][1] .= '/'; + // $head[$h][1] .= $langs->trans("Agenda"); + // } + // $head[$h][2] = 'agenda'; + // $h++; /*$head[$h][0] = DOL_URL_ROOT.'/resource/info.php?id='.$object->id; $head[$h][1] = $langs->trans('Info'); diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 64747c1b..f0506f8b 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -379,70 +379,70 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print $form->textwithpicto($langs->trans("DefaultSkin"), $langs->trans("ThemeDir").' : '.$dirthemestring); print ''; print ''; - $url = 'https://www.dolistore.com/9-skins'; - print ''; - print $langs->trans('DownloadMoreSkins'); - print img_picto('', 'globe', 'class="paddingleft"'); - print ''; + // $url = 'https://www.dolistore.com/9-skins'; + // print ''; + // print $langs->trans('DownloadMoreSkins'); + // print img_picto('', 'globe', 'class="paddingleft"'); + // print ''; print ''; } print ''; - if (!empty($conf->global->MAIN_FORCETHEME)) { - $langs->load("errors"); - print $langs->trans("WarningThemeForcedTo", $conf->global->MAIN_FORCETHEME); - } + // if (!empty($conf->global->MAIN_FORCETHEME)) { + // $langs->load("errors"); + // print $langs->trans("WarningThemeForcedTo", $conf->global->MAIN_FORCETHEME); + // } print '
    '; $i = 0; - foreach ($dirthemes as $dir) { - //print $dirroot.$dir;exit; - $dirtheme = dol_buildpath($dir, 0); // This include loop on $conf->file->dol_document_root - $urltheme = dol_buildpath($dir, 1); - - if (is_dir($dirtheme)) { - $handle = opendir($dirtheme); - if (is_resource($handle)) { - while (($subdir = readdir($handle)) !== false) { - if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' - && substr($subdir, 0, 3) <> 'CVS' && !preg_match('/common|phones/i', $subdir)) { - // Disable not stable themes (dir ends with _exp or _dev) - if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i', $subdir)) { - continue; - } - if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i', $subdir)) { - continue; - } - - print '
    '; - $file = $dirtheme."/".$subdir."/thumb.png"; - $url = $urltheme."/".$subdir."/thumb.png"; - if (!file_exists($file)) { - $url = DOL_URL_ROOT.'/public/theme/common/nophoto.png'; - } - print ''; - if ($subdir == $conf->global->MAIN_THEME) { - $title = $langs->trans("ThemeCurrentlyActive"); - } else { - $title = $langs->trans("ShowPreview"); - } - print ''.dol_escape_htmltag($title).''; - print '
    '; - if ($subdir == $selected_theme) { - print ''; - } else { - print ''; - } - print '
    '; - - $i++; - } - } - } - } - } + // foreach ($dirthemes as $dir) { + // //print $dirroot.$dir;exit; + // $dirtheme = dol_buildpath($dir, 0); // This include loop on $conf->file->dol_document_root + // $urltheme = dol_buildpath($dir, 1); + + // if (is_dir($dirtheme)) { + // $handle = opendir($dirtheme); + // if (is_resource($handle)) { + // while (($subdir = readdir($handle)) !== false) { + // if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.' + // && substr($subdir, 0, 3) <> 'CVS' && !preg_match('/common|phones/i', $subdir)) { + // // Disable not stable themes (dir ends with _exp or _dev) + // if ($conf->global->MAIN_FEATURES_LEVEL < 2 && preg_match('/_dev$/i', $subdir)) { + // continue; + // } + // if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/_exp$/i', $subdir)) { + // continue; + // } + + // print '
    '; + // $file = $dirtheme."/".$subdir."/thumb.png"; + // $url = $urltheme."/".$subdir."/thumb.png"; + // if (!file_exists($file)) { + // $url = DOL_URL_ROOT.'/public/theme/common/nophoto.png'; + // } + // print ''; + // if ($subdir == $conf->global->MAIN_THEME) { + // $title = $langs->trans("ThemeCurrentlyActive"); + // } else { + // $title = $langs->trans("ShowPreview"); + // } + // print ''.dol_escape_htmltag($title).''; + // print '
    '; + // if ($subdir == $selected_theme) { + // print ''; + // } else { + // print ''; + // } + // print '
    '; + + // $i++; + // } + // } + // } + // } + // } print '
    '; diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 16245427..1ccdb4b3 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -805,65 +805,65 @@ function getSocialNetworkHeaderCards($params = null) $out = ''; - if ($website->virtualhost) { - $pageurl = $websitepage->pageurl; - $title = $websitepage->title; - $image = $websitepage->image; - $companyname = $mysoc->name; - $description = $websitepage->description; - - $pageurl = str_replace('__WEBSITE_KEY__', $website->ref, $pageurl); - $title = str_replace('__WEBSITE_KEY__', $website->ref, $title); - $image = '/medias'.(preg_match('/^\//', $image) ? '' : '/').str_replace('__WEBSITE_KEY__', $website->ref, $image); - $companyname = str_replace('__WEBSITE_KEY__', $website->ref, $companyname); - $description = str_replace('__WEBSITE_KEY__', $website->ref, $description); - - $shortlangcode = ''; - if ($websitepage->lang) { - $shortlangcode = substr($websitepage->lang, 0, 2); // en_US or en-US -> en - } - if (empty($shortlangcode)) { - $shortlangcode = substr($website->lang, 0, 2); // en_US or en-US -> en - } - - $fullurl = $website->virtualhost.'/'.$websitepage->pageurl.'.php'; - $canonicalurl = $website->virtualhost.(($websitepage->id == $website->fk_default_home) ? '/' : (($shortlangcode != substr($website->lang, 0, 2) ? '/'.$shortlangcode : '').'/'.$websitepage->pageurl.'.php')); - $hashtags = trim(join(' #', array_map('trim', explode(',', $websitepage->keywords)))); - - // Open Graph - $out .= ''."\n"; // TODO If blogpost, use type article - $out .= ''."\n"; - if ($websitepage->image) { - $out .= ''."\n"; - } - $out .= ''."\n"; - - // Twitter - $out .= ''."\n"; - if (!empty($params) && !empty($params['twitter_account'])) { - $out .= ''."\n"; - $out .= ''."\n"; - } - $out .= ''."\n"; - if ($websitepage->description) { - $out .= ''."\n"; - } - if ($websitepage->image) { - $out .= ''."\n"; - } - //$out .= ''; - /* - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - */ - } + // if ($website->virtualhost) { + // $pageurl = $websitepage->pageurl; + // $title = $websitepage->title; + // $image = $websitepage->image; + // $companyname = $mysoc->name; + // $description = $websitepage->description; + + // $pageurl = str_replace('__WEBSITE_KEY__', $website->ref, $pageurl); + // $title = str_replace('__WEBSITE_KEY__', $website->ref, $title); + // $image = '/medias'.(preg_match('/^\//', $image) ? '' : '/').str_replace('__WEBSITE_KEY__', $website->ref, $image); + // $companyname = str_replace('__WEBSITE_KEY__', $website->ref, $companyname); + // $description = str_replace('__WEBSITE_KEY__', $website->ref, $description); + + // $shortlangcode = ''; + // if ($websitepage->lang) { + // $shortlangcode = substr($websitepage->lang, 0, 2); // en_US or en-US -> en + // } + // if (empty($shortlangcode)) { + // $shortlangcode = substr($website->lang, 0, 2); // en_US or en-US -> en + // } + + // $fullurl = $website->virtualhost.'/'.$websitepage->pageurl.'.php'; + // $canonicalurl = $website->virtualhost.(($websitepage->id == $website->fk_default_home) ? '/' : (($shortlangcode != substr($website->lang, 0, 2) ? '/'.$shortlangcode : '').'/'.$websitepage->pageurl.'.php')); + // $hashtags = trim(join(' #', array_map('trim', explode(',', $websitepage->keywords)))); + + // // Open Graph + // // $out .= ''."\n"; // TODO If blogpost, use type article + // // $out .= ''."\n"; + // // if ($websitepage->image) { + // // $out .= ''."\n"; + // // } + // // $out .= ''."\n"; + + // // Twitter + // // $out .= ''."\n"; + // // if (!empty($params) && !empty($params['twitter_account'])) { + // // $out .= ''."\n"; + // // $out .= ''."\n"; + // // } + // // $out .= ''."\n"; + // // if ($websitepage->description) { + // // $out .= ''."\n"; + // // } + // // if ($websitepage->image) { + // // $out .= ''."\n"; + // // } + // //$out .= ''; + // /* + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // $out .= ''; + // */ + // } return $out; } @@ -876,53 +876,53 @@ function getSocialNetworkHeaderCards($params = null) function getSocialNetworkSharingLinks() { global $conf, $db, $hookmanager, $langs, $mysoc, $user, $website, $websitepage, $weblangs; // Very important. Required to have var available when running inluded containers. - - $out = ''."\n"; - - if ($website->virtualhost) { - $fullurl = $website->virtualhost.'/'.$websitepage->pageurl.'.php'; - $hashtags = trim(join(' #', array_map('trim', explode(',', $websitepage->keywords)))); - - $out .= '

    \n"; - } else { - $out .= ''."\n"; - } - $out .= ''."\n"; + $out=""; + // $out = ''."\n"; + + // if ($website->virtualhost) { + // $fullurl = $website->virtualhost.'/'.$websitepage->pageurl.'.php'; + // $hashtags = trim(join(' #', array_map('trim', explode(',', $websitepage->keywords)))); + + // $out .= '\n"; + // } else { + // $out .= ''."\n"; + // } + // $out .= ''."\n"; return $out; } diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 5fbe998a..d645aaf3 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1456,21 +1456,21 @@ function get_left_menu_billing($mainmenu, &$newmenu, $usemenuhider = 1, $leftmen $newmenu->add("/fourn/facture/card.php?leftmenu=suppliers_bills&action=create", $langs->trans("NewBill"), 1, ($user->hasRight('fournisseur', 'facture', 'creer') || $user->hasRight('supplier_invoice', 'creer')), '', $mainmenu, 'suppliers_bills_create'); $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("List"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_list'); - if ($usemenuhider || empty($leftmenu) || preg_match('/suppliers_bills/', $leftmenu)) { - $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_draft&search_status=0", $langs->trans("BillShortStatusDraft"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_draft'); - $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_notpaid&search_status=1", $langs->trans("BillShortStatusNotPaid"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_notpaid'); - $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_paid&search_status=2", $langs->trans("BillShortStatusPaid"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_paid'); - } + // if ($usemenuhider || empty($leftmenu) || preg_match('/suppliers_bills/', $leftmenu)) { + // $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_draft&search_status=0", $langs->trans("BillShortStatusDraft"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_draft'); + // $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_notpaid&search_status=1", $langs->trans("BillShortStatusNotPaid"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_notpaid'); + // $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_paid&search_status=2", $langs->trans("BillShortStatusPaid"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_paid'); + // } - $newmenu->add("/fourn/facture/list-rec.php?leftmenu=supplierinvoicestemplate_list", $langs->trans("ListOfTemplates"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'supplierinvoicestemplate_list'); + // $newmenu->add("/fourn/facture/list-rec.php?leftmenu=supplierinvoicestemplate_list", $langs->trans("ListOfTemplates"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'supplierinvoicestemplate_list'); $newmenu->add("/fourn/paiement/list.php?leftmenu=suppliers_bills_payment", $langs->trans("Payments"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_payment'); - if ($usemenuhider || empty($leftmenu) || preg_match('/suppliers_bills/', $leftmenu)) { - $newmenu->add("/fourn/facture/rapport.php?leftmenu=suppliers_bills_payment_report", $langs->trans("Reportings"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_payment_report'); - } + // if ($usemenuhider || empty($leftmenu) || preg_match('/suppliers_bills/', $leftmenu)) { + // $newmenu->add("/fourn/facture/rapport.php?leftmenu=suppliers_bills_payment_report", $langs->trans("Reportings"), 2, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_payment_report'); + // } - $newmenu->add("/compta/facture/stats/index.php?mode=supplier&leftmenu=suppliers_bills_stats", $langs->trans("Statistics"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_stats'); + // $newmenu->add("/compta/facture/stats/index.php?mode=supplier&leftmenu=suppliers_bills_stats", $langs->trans("Statistics"), 1, $user->hasRight('fournisseur', 'facture', 'lire'), '', $mainmenu, 'suppliers_bills_stats'); } // Orders diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_html.modules.php similarity index 76% rename from htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php rename to htdocs/core/modules/propale/doc/doc_generic_proposal_html.modules.php index b7dfc374..f4754ba5 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_html.modules.php @@ -1,48 +1,46 @@ * Copyright (C) 2012 Juanjo Menent - * Copyright (C) 2014 Marcos García * Copyright (C) 2016 Charlie Benke - * Copyright (C) 2018-2021 Philippe Grand - * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018-2019 Frédéric France * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see https://www.gnu.org/ - */ +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* or see https://www.gnu.org/ +*/ /** - * \file htdocs/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php - * \ingroup mymodule - * \brief File of class to build ODT documents for myobjects + * \file htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php + * \ingroup societe + * \brief File of class to build ODT documents for third parties */ -dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); +require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php'; /** * Class to build documents using ODF templates generator */ -class doc_generic_myobject_odt extends ModelePDFMyObject +class doc_generic_proposal_odt extends ModelePDFPropales { /** - * Issuer - * @var Societe + * @var Societe Issuer object that emits */ public $emetteur; @@ -71,12 +69,13 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $langs->loadLangs(array("main", "companies")); $this->db = $db; - $this->name = "ODT templates"; - $this->description = $langs->trans("DocumentModelOdt"); - $this->scandir = 'MYMODULE_MYOBJECT_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan + $this->name = "HTML templates"; + $this->description = $langs->trans("DocumentModelHTML"); + $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template + $this->scandir = 'PROPALE_ADDON_PDF_HTML_PATH'; // Name of constant that is used to save list of directories to scan // Page size for A4 format - $this->type = 'odt'; + $this->type = 'html'; $this->page_largeur = 0; $this->page_hauteur = 0; $this->format = array($this->page_largeur, $this->page_hauteur); @@ -86,7 +85,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $this->marge_basse = 0; $this->option_logo = 1; // Display logo - $this->option_tva = 0; // Manage the vat option FACTURE_TVAOPTION + $this->option_tva = 0; // Manage the vat option PROPALE_TVAOPTION $this->option_modereg = 0; // Display payment mode $this->option_condreg = 0; // Display payment terms $this->option_multilang = 1; // Available in several languages @@ -118,18 +117,26 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $form = new Form($this->db); + $odtChosen = getDolGlobalInt('MAIN_PROPAL_CHOOSE_HTML_DOCUMENT') > 0; + $odtPath = trim(getDolGlobalString('PROPALE_ADDON_PDF_HTML_PATH')); + $texte = $this->description.".
    \n"; $texte .= '
    '; $texte .= ''; $texte .= ''; $texte .= ''; - $texte .= ''; + $texte .= ''; + if ($odtChosen) { + $texte .= ''; + $texte .= ''; + $texte .= ''; + } $texte .= ''; // List of directories area $texte .= ''; $texte .= ' - - - - - - - - - \n"; diff --git a/htdocs/modulebuilder/template/core/triggers/README.md b/htdocs/modulebuilder/template/core/triggers/README.md deleted file mode 100644 index 38d1b1d8..00000000 --- a/htdocs/modulebuilder/template/core/triggers/README.md +++ /dev/null @@ -1 +0,0 @@ -Directory where triggers files are stored. \ No newline at end of file diff --git a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php deleted file mode 100644 index 8f7764ad..00000000 --- a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php +++ /dev/null @@ -1,323 +0,0 @@ -. - */ - -/** - * \file core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php - * \ingroup mymodule - * \brief Example trigger. - * - * Put detailed description here. - * - * \remarks You can create other triggers by copying this one. - * - File name should be either: - * - interface_99_modMyModule_MyTrigger.class.php - * - interface_99_all_MyTrigger.class.php - * - The file must stay in core/triggers - * - The class name must be InterfaceMytrigger - */ - -require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; - - -/** - * Class of triggers for MyModule module - */ -class InterfaceMyModuleTriggers extends DolibarrTriggers -{ - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - - $this->name = preg_replace('/^Interface/i', '', get_class($this)); - $this->family = "demo"; - $this->description = "MyModule triggers."; - // 'development', 'experimental', 'dolibarr' or version - $this->version = 'development'; - $this->picto = 'mymodule@mymodule'; - } - - /** - * Trigger name - * - * @return string Name of trigger file - */ - public function getName() - { - return $this->name; - } - - /** - * Trigger description - * - * @return string Description of trigger file - */ - public function getDesc() - { - return $this->description; - } - - - /** - * Function called when a Dolibarrr business event is done. - * All functions "runTrigger" are triggered if file - * is inside directory core/triggers - * - * @param string $action Event action code - * @param CommonObject $object Object - * @param User $user Object user - * @param Translate $langs Object langs - * @param Conf $conf Object conf - * @return int <0 if KO, 0 if no triggered ran, >0 if OK - */ - public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) - { - if (empty($conf->mymodule) || empty($conf->mymodule->enabled)) { - return 0; // If module is not enabled, we do nothing - } - - // Put here code you want to execute when a Dolibarr business events occurs. - // Data and type of action are stored into $object and $action - - // You can isolate code for each action in a separate method: this method should be named like the trigger in camelCase. - // For example : COMPANY_CREATE => public function companyCreate($action, $object, User $user, Translate $langs, Conf $conf) - $methodName = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', strtolower($action))))); - $callback = array($this, $methodName); - if (is_callable($callback)) { - dol_syslog( - "Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id - ); - - return call_user_func($callback, $action, $object, $user, $langs, $conf); - }; - - // Or you can execute some code here - switch ($action) { - // Users - //case 'USER_CREATE': - //case 'USER_MODIFY': - //case 'USER_NEW_PASSWORD': - //case 'USER_ENABLEDISABLE': - //case 'USER_DELETE': - - // Actions - //case 'ACTION_MODIFY': - //case 'ACTION_CREATE': - //case 'ACTION_DELETE': - - // Groups - //case 'USERGROUP_CREATE': - //case 'USERGROUP_MODIFY': - //case 'USERGROUP_DELETE': - - // Companies - //case 'COMPANY_CREATE': - //case 'COMPANY_MODIFY': - //case 'COMPANY_DELETE': - - // Contacts - //case 'CONTACT_CREATE': - //case 'CONTACT_MODIFY': - //case 'CONTACT_DELETE': - //case 'CONTACT_ENABLEDISABLE': - - // Products - //case 'PRODUCT_CREATE': - //case 'PRODUCT_MODIFY': - //case 'PRODUCT_DELETE': - //case 'PRODUCT_PRICE_MODIFY': - //case 'PRODUCT_SET_MULTILANGS': - //case 'PRODUCT_DEL_MULTILANGS': - - //Stock mouvement - //case 'STOCK_MOVEMENT': - - //MYECMDIR - //case 'MYECMDIR_CREATE': - //case 'MYECMDIR_MODIFY': - //case 'MYECMDIR_DELETE': - - // Sales orders - //case 'ORDER_CREATE': - //case 'ORDER_MODIFY': - //case 'ORDER_VALIDATE': - //case 'ORDER_DELETE': - //case 'ORDER_CANCEL': - //case 'ORDER_SENTBYMAIL': - //case 'ORDER_CLASSIFY_BILLED': - //case 'ORDER_SETDRAFT': - //case 'LINEORDER_INSERT': - //case 'LINEORDER_UPDATE': - //case 'LINEORDER_DELETE': - - // Supplier orders - //case 'ORDER_SUPPLIER_CREATE': - //case 'ORDER_SUPPLIER_MODIFY': - //case 'ORDER_SUPPLIER_VALIDATE': - //case 'ORDER_SUPPLIER_DELETE': - //case 'ORDER_SUPPLIER_APPROVE': - //case 'ORDER_SUPPLIER_REFUSE': - //case 'ORDER_SUPPLIER_CANCEL': - //case 'ORDER_SUPPLIER_SENTBYMAIL': - //case 'ORDER_SUPPLIER_RECEIVE': - //case 'LINEORDER_SUPPLIER_DISPATCH': - //case 'LINEORDER_SUPPLIER_CREATE': - //case 'LINEORDER_SUPPLIER_UPDATE': - //case 'LINEORDER_SUPPLIER_DELETE': - - // Proposals - //case 'PROPAL_CREATE': - //case 'PROPAL_MODIFY': - //case 'PROPAL_VALIDATE': - //case 'PROPAL_SENTBYMAIL': - //case 'PROPAL_CLOSE_SIGNED': - //case 'PROPAL_CLOSE_REFUSED': - //case 'PROPAL_DELETE': - //case 'LINEPROPAL_INSERT': - //case 'LINEPROPAL_UPDATE': - //case 'LINEPROPAL_DELETE': - - // SupplierProposal - //case 'SUPPLIER_PROPOSAL_CREATE': - //case 'SUPPLIER_PROPOSAL_MODIFY': - //case 'SUPPLIER_PROPOSAL_VALIDATE': - //case 'SUPPLIER_PROPOSAL_SENTBYMAIL': - //case 'SUPPLIER_PROPOSAL_CLOSE_SIGNED': - //case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': - //case 'SUPPLIER_PROPOSAL_DELETE': - //case 'LINESUPPLIER_PROPOSAL_INSERT': - //case 'LINESUPPLIER_PROPOSAL_UPDATE': - //case 'LINESUPPLIER_PROPOSAL_DELETE': - - // Contracts - //case 'CONTRACT_CREATE': - //case 'CONTRACT_MODIFY': - //case 'CONTRACT_ACTIVATE': - //case 'CONTRACT_CANCEL': - //case 'CONTRACT_CLOSE': - //case 'CONTRACT_DELETE': - //case 'LINECONTRACT_INSERT': - //case 'LINECONTRACT_UPDATE': - //case 'LINECONTRACT_DELETE': - - // Bills - //case 'BILL_CREATE': - //case 'BILL_MODIFY': - //case 'BILL_VALIDATE': - //case 'BILL_UNVALIDATE': - //case 'BILL_SENTBYMAIL': - //case 'BILL_CANCEL': - //case 'BILL_DELETE': - //case 'BILL_PAYED': - //case 'LINEBILL_INSERT': - //case 'LINEBILL_UPDATE': - //case 'LINEBILL_DELETE': - - //Supplier Bill - //case 'BILL_SUPPLIER_CREATE': - //case 'BILL_SUPPLIER_UPDATE': - //case 'BILL_SUPPLIER_DELETE': - //case 'BILL_SUPPLIER_PAYED': - //case 'BILL_SUPPLIER_UNPAYED': - //case 'BILL_SUPPLIER_VALIDATE': - //case 'BILL_SUPPLIER_UNVALIDATE': - //case 'LINEBILL_SUPPLIER_CREATE': - //case 'LINEBILL_SUPPLIER_UPDATE': - //case 'LINEBILL_SUPPLIER_DELETE': - - // Payments - //case 'PAYMENT_CUSTOMER_CREATE': - //case 'PAYMENT_SUPPLIER_CREATE': - //case 'PAYMENT_ADD_TO_BANK': - //case 'PAYMENT_DELETE': - - // Online - //case 'PAYMENT_PAYBOX_OK': - //case 'PAYMENT_PAYPAL_OK': - //case 'PAYMENT_STRIPE_OK': - - // Donation - //case 'DON_CREATE': - //case 'DON_UPDATE': - //case 'DON_DELETE': - - // Interventions - //case 'FICHINTER_CREATE': - //case 'FICHINTER_MODIFY': - //case 'FICHINTER_VALIDATE': - //case 'FICHINTER_DELETE': - //case 'LINEFICHINTER_CREATE': - //case 'LINEFICHINTER_UPDATE': - //case 'LINEFICHINTER_DELETE': - - // Members - //case 'MEMBER_CREATE': - //case 'MEMBER_VALIDATE': - //case 'MEMBER_SUBSCRIPTION': - //case 'MEMBER_MODIFY': - //case 'MEMBER_NEW_PASSWORD': - //case 'MEMBER_RESILIATE': - //case 'MEMBER_DELETE': - - // Categories - //case 'CATEGORY_CREATE': - //case 'CATEGORY_MODIFY': - //case 'CATEGORY_DELETE': - //case 'CATEGORY_SET_MULTILANGS': - - // Projects - //case 'PROJECT_CREATE': - //case 'PROJECT_MODIFY': - //case 'PROJECT_DELETE': - - // Project tasks - //case 'TASK_CREATE': - //case 'TASK_MODIFY': - //case 'TASK_DELETE': - - // Task time spent - //case 'TASK_TIMESPENT_CREATE': - //case 'TASK_TIMESPENT_MODIFY': - //case 'TASK_TIMESPENT_DELETE': - //case 'PROJECT_ADD_CONTACT': - //case 'PROJECT_DELETE_CONTACT': - //case 'PROJECT_DELETE_RESOURCE': - - // Shipping - //case 'SHIPPING_CREATE': - //case 'SHIPPING_MODIFY': - //case 'SHIPPING_VALIDATE': - //case 'SHIPPING_SENTBYMAIL': - //case 'SHIPPING_BILLED': - //case 'SHIPPING_CLOSED': - //case 'SHIPPING_REOPEN': - //case 'SHIPPING_DELETE': - - // and more... - - default: - dol_syslog("Trigger '".$this->name."' for action '".$action."' launched by ".__FILE__.". id=".$object->id); - break; - } - - return 0; - } -} diff --git a/htdocs/modulebuilder/template/css/mymodule.css.php b/htdocs/modulebuilder/template/css/mymodule.css.php deleted file mode 100644 index 260868a1..00000000 --- a/htdocs/modulebuilder/template/css/mymodule.css.php +++ /dev/null @@ -1,110 +0,0 @@ -. - */ - -/** - * \file htdocs/modulebuilder/template/css/mymodule.css.php - * \ingroup mymodule - * \brief CSS file for module MyModule. - */ - -//if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled because need to load personalized language -//if (!defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled. Language code is found on url. -if (!defined('NOREQUIRESOC')) { - define('NOREQUIRESOC', '1'); -} -//if (!defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled because need to do translations -//if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); // Should be disable only for special situation -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', 1); -} -if (!defined('NOLOGIN')) { - define('NOLOGIN', 1); // File must be accessed by logon page so without login -} -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); // We need top menu content -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', 1); -} -if (!defined('NOREQUIREAJAX')) { - define('NOREQUIREAJAX', '1'); -} - -session_cache_limiter('public'); -// false or '' = keep cache instruction added by server -// 'public' = remove cache instruction added by server -// and if no cache-control added later, a default cache delay (10800) will be added by PHP. - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/../main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/../main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - -// Load user to have $user->conf loaded (not done by default here because of NOLOGIN constant defined) and load permission if we need to use them in CSS -/*if (empty($user->id) && !empty($_SESSION['dol_login'])) { - $user->fetch('',$_SESSION['dol_login']); - $user->getrights(); -}*/ - - -// Define css type -header('Content-type: text/css'); -// Important: Following code is to cache this file to avoid page request by browser at each Dolibarr page access. -// You can use CTRL+F5 to refresh your browser cache. -if (empty($dolibarr_nocache)) { - header('Cache-Control: max-age=10800, public, must-revalidate'); -} else { - header('Cache-Control: no-cache'); -} - -?> - -div.mainmenu.mymodule::before { - content: "\f249"; -} -div.mainmenu.mymodule { - background-image: none; -} - -.myclasscss { - /* ... */ -} - - diff --git a/htdocs/modulebuilder/template/doc/Documentation.asciidoc b/htdocs/modulebuilder/template/doc/Documentation.asciidoc deleted file mode 100644 index 5a05c701..00000000 --- a/htdocs/modulebuilder/template/doc/Documentation.asciidoc +++ /dev/null @@ -1,56 +0,0 @@ -= MYMODULE = -:subtitle: MYMODULE DOCUMENTATION -:source-highlighter: rouge -:companyname: __MYCOMPANY_NAME__ -:corpname: __MYCOMPANY_NAME__ -:orgname: __MYCOMPANY_NAME__ -:creator: __USER_FULLNAME__ -:title: Documentation of module MyModule -:subject: This document is the document of module MyModule. -:keywords: __KEYWORDS__ -// Date du document : -:docdate: __YYYY-MM-DD__ -:toc: manual -:toc-placement: preamble - - -== TOPIC OF DOCUMENT - -This is the documentation of module MyModule - - -*Log of versions of document* - -[options="header",format="csv"] -|=== -Author, Date, Version ---- __USER_FULLNAME__ __USER_EMAIL__ ---, __YYYY-MM-DD__, Version 1.0 -|=== - - -[NOTE] -============== -This document was generated using Dolibarr ERP CRM process -============== - - -:toc: manual -:toc-placement: preamble - -<<< - -== INTRODUCTION - -//include::README.md[] -__README__ - -== DATA SPECIFICATIONS - -__DATA_SPECIFICATION__ - - -== CHANGELOG - -//include::ChangeLog.md[] -__CHANGELOG__ - diff --git a/htdocs/modulebuilder/template/doc/Documentation_full_en.example.asciidoc b/htdocs/modulebuilder/template/doc/Documentation_full_en.example.asciidoc deleted file mode 100644 index 4c744210..00000000 --- a/htdocs/modulebuilder/template/doc/Documentation_full_en.example.asciidoc +++ /dev/null @@ -1,138 +0,0 @@ -= MYMODULE = -:subtitle: MYMODULE DOCUMENTATION -:source-highlighter: rouge -:companyname: __MYCOMPANY_NAME__ -:corpname: __MYCOMPANY_NAME__ -:orgname: __MYCOMPANY_NAME__ -:creator: __USER_FULLNAME__ -:title: Documentation of module MyModule -:subject: This document is the document of module MyModule. -:keywords: __KEYWORDS__ -// Date du document : -:docdate: __YYYY-MM-DD__ -:toc: manual -:toc-placement: preamble - - - -== TOPIC OF DOCUMENT - -This document was build from following input: - -* Date 1 -... - -* Date 2 -... - - -The document includes an introductory chapter of functional specifications, presenting the different actors involved in the rebuild of the definitions -of business terms that will be used (some of which may be new or different). -The main following chapter will present the entire process, also known as *uses cases*, according to a principle of a description, in chronological sequence if possible, -to present the actor and the action performed, as in the following example: - -* *X* Actor realizes Action A. -* *Y* Actor communicates Info B to Actor *Z* -* *Automaton* performs update of data for... -* Etc ... - -Functional requirements are complemented by a chapter of technical requirements. -The chapter on data lists key information specific to Presto that were identified at the time of writing specification. It will be enriched as -iterations occurs. - -Finally, in the Appendix, the documents known when writing this document are centralized to illustrate the existing document or inspire the new expected one. -These documents have their content directly integrated in this specification or have a reference to -external documents stored in the *Appendices* directory accompanying this document. - - - -*Log of versions* - -[options="header",format="csv"] -|=== -Author, Date, Version ---- __USER_FULLNAME__ __USER_EMAIL__ ---, __YYYY-MM-DD__, Version 1.0 -|=== - - - -<<< - - -== BUSINESS SPECIFICATIONS - INTRODUCTION - -=== List of actors [[actors]] - -Actors are physical people or moral entities working on at least one process. -The following chart prensts list of actors or partners identified by the project for the defined scope of project. We will use then the name defined into first column to speak about roles in the rest of documents. - -[options="header",format="csv"] -|=== -Actor/profil/role, Description of role, Access to system or not, Example of actor -Customer Service, Receive and create Sales orders (SO), Yes, Mr Smith -Purchase, Make puchase order (PO), Yes, 5 people -Administrator - IT, Administration of users/groups and IT services, Yes, John Doe -Automaton, Execute automatic data processing, Yes, NA -|=== - - -=== Definitions [[definitions]] - -To understand the descriptions of the target process, it was necessary to define or redefine some vocabulary concepts. We must see these definitions as defined in the -new system. Indeed, some terms are already being used but have either not a definition in line with standards, or even differs between services. To bring everyone, -and to consolidate the process, these terms are redefined here, and with their definition in the target objective. - -*Definition ABC* - -... - -*Definition DEF* - -... - - -[NOTE] -============== -Important information will be noticed with a notice like this one. - -* Main information 1 -* Main information 2 -============== - - - -== BUSINESS SPECIFICATION - PROCESS - -Specifications were cut into different business process. We call a business process a workflow with a starting situation and ending situation. Between start and end, we will find actions -done by actors to bring the value of the company. This actions are described using the syntax rule: -*Actor X* do action Y, *Actor Z* do action W. - -_Each process/use case is described into a separate chapter._ - - -=== Use case / Process 1 [[process_1]] - -==== Title and goals - -... - -==== Actors or roles - -* Members of group *...* - -==== Standard flow - -* Members of Groupe *...*: Do ... -* Members of Groupe *...*: Do ... -* Members of Groupe *...*: Do ... - -==== Alternative flow - -* A user without role *...*: Can't do ... - -==== Business rules - -* Business rule 1 -* Business rule 2 - - diff --git a/htdocs/modulebuilder/template/img/README.md b/htdocs/modulebuilder/template/img/README.md deleted file mode 100644 index 2fcb4afc..00000000 --- a/htdocs/modulebuilder/template/img/README.md +++ /dev/null @@ -1,14 +0,0 @@ - -Directory for module image files --------------------------------- - -You can put here the .png files of your module: - - -If the picto of your module is an image (property $picto has been set to 'mymodule.png@mymodule', you can put into this -directory a .png file called *object_mymodule.png* (16x16 or 32x32 pixels) - - -If the picto of an object is an image (property $picto of the object.class.php has been set to 'myobject.png@mymodule', then you can put into this -directory a .png file called *object_myobject.png* (16x16 or 32x32 pixels) - diff --git a/htdocs/modulebuilder/template/js/mymodule.js.php b/htdocs/modulebuilder/template/js/mymodule.js.php deleted file mode 100644 index fe04cdc2..00000000 --- a/htdocs/modulebuilder/template/js/mymodule.js.php +++ /dev/null @@ -1,99 +0,0 @@ -. - * - * Library javascript to enable Browser notifications - */ - -if (!defined('NOREQUIREUSER')) { - define('NOREQUIREUSER', '1'); -} -if (!defined('NOREQUIREDB')) { - define('NOREQUIREDB', '1'); -} -if (!defined('NOREQUIRESOC')) { - define('NOREQUIRESOC', '1'); -} -if (!defined('NOREQUIRETRAN')) { - define('NOREQUIRETRAN', '1'); -} -if (!defined('NOCSRFCHECK')) { - define('NOCSRFCHECK', 1); -} -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', 1); -} -if (!defined('NOLOGIN')) { - define('NOLOGIN', 1); -} -if (!defined('NOREQUIREMENU')) { - define('NOREQUIREMENU', 1); -} -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', 1); -} -if (!defined('NOREQUIREAJAX')) { - define('NOREQUIREAJAX', '1'); -} - - -/** - * \file htdocs/modulebuilder/template/js/mymodule.js.php - * \ingroup mymodule - * \brief JavaScript file for module MyModule. - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/../main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/../main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -// Define js type -header('Content-Type: application/javascript'); -// Important: Following code is to cache this file to avoid page request by browser at each Dolibarr page access. -// You can use CTRL+F5 to refresh your browser cache. -if (empty($dolibarr_nocache)) { - header('Cache-Control: max-age=3600, public, must-revalidate'); -} else { - header('Cache-Control: no-cache'); -} -?> - -/* Javascript library of module MyModule */ - - diff --git a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang deleted file mode 100644 index cc518391..00000000 --- a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) ---Put here your own copyright and developer email--- -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# -# Generic -# - -# Module label 'ModuleMyModuleName' -ModuleMyModuleName = MyModule -# Module description 'ModuleMyModuleDesc' -ModuleMyModuleDesc = MyModule description - -# -# Admin page -# -MyModuleSetup = MyModule setup -Settings = Settings -MyModuleSetupPage = MyModule setup page -MYMODULE_MYPARAM1 = My param 1 -MYMODULE_MYPARAM1Tooltip = My param 1 tooltip -MYMODULE_MYPARAM2=My param 2 -MYMODULE_MYPARAM2Tooltip=My param 2 tooltip - - -# -# About page -# -About = About -MyModuleAbout = About MyModule -MyModuleAboutPage = MyModule about page - -# -# Sample page -# -MyModuleArea = Home MyModule -MyPageName = My page name - -# -# Sample widget -# -MyWidget = My widget -MyWidgetDescription = My widget description diff --git a/htdocs/modulebuilder/template/lib/mymodule.lib.php b/htdocs/modulebuilder/template/lib/mymodule.lib.php deleted file mode 100644 index 0ebae6eb..00000000 --- a/htdocs/modulebuilder/template/lib/mymodule.lib.php +++ /dev/null @@ -1,76 +0,0 @@ -. - */ - -/** - * \file htdocs/modulebuilder/template/lib/mymodule.lib.php - * \ingroup mymodule - * \brief Library files with common functions for MyModule - */ - -/** - * Prepare admin pages header - * - * @return array - */ -function mymoduleAdminPrepareHead() -{ - global $langs, $conf; - - // global $db; - // $extrafields = new ExtraFields($db); - // $extrafields->fetch_name_optionals_label('myobject'); - - $langs->load("mymodule@mymodule"); - - $h = 0; - $head = array(); - - $head[$h][0] = dol_buildpath("/mymodule/admin/setup.php", 1); - $head[$h][1] = $langs->trans("Settings"); - $head[$h][2] = 'settings'; - $h++; - - /* - $head[$h][0] = dol_buildpath("/mymodule/admin/myobject_extrafields.php", 1); - $head[$h][1] = $langs->trans("ExtraFields"); - $nbExtrafields = is_countable($extrafields->attributes['myobject']['label']) ? count($extrafields->attributes['myobject']['label']) : 0; - if ($nbExtrafields > 0) { - $head[$h][1] .= ' ' . $nbExtrafields . ''; - } - $head[$h][2] = 'myobject_extrafields'; - $h++; - */ - - $head[$h][0] = dol_buildpath("/mymodule/admin/about.php", 1); - $head[$h][1] = $langs->trans("About"); - $head[$h][2] = 'about'; - $h++; - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - //$this->tabs = array( - // 'entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__' - //); // to add new tab - //$this->tabs = array( - // 'entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__' - //); // to remove a tab - complete_head_from_modules($conf, $langs, null, $head, $h, 'mymodule@mymodule'); - - complete_head_from_modules($conf, $langs, null, $head, $h, 'mymodule@mymodule', 'remove'); - - return $head; -} diff --git a/htdocs/modulebuilder/template/lib/mymodule_myobject.lib.php b/htdocs/modulebuilder/template/lib/mymodule_myobject.lib.php deleted file mode 100644 index d75f69a4..00000000 --- a/htdocs/modulebuilder/template/lib/mymodule_myobject.lib.php +++ /dev/null @@ -1,110 +0,0 @@ -. - */ - -/** - * \file htdocs/modulebuilder/template/lib/mymodule_myobject.lib.php - * \ingroup mymodule - * \brief Library files with common functions for MyObject - */ - -/** - * Prepare array of tabs for MyObject - * - * @param MyObject $object MyObject - * @return array Array of tabs - */ -function myobjectPrepareHead($object) -{ - global $db, $langs, $conf; - - $langs->load("mymodule@mymodule"); - - $showtabofpagecontact = 1; - $showtabofpagenote = 1; - $showtabofpagedocument = 1; - $showtabofpageagenda = 1; - - $h = 0; - $head = array(); - - $head[$h][0] = dol_buildpath("/mymodule/myobject_card.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans("Card"); - $head[$h][2] = 'card'; - $h++; - - if ($showtabofpagecontact) { - $head[$h][0] = dol_buildpath("/mymodule/myobject_contact.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans("Contacts"); - $head[$h][2] = 'contact'; - $h++; - } - - if ($showtabofpagenote) { - if (isset($object->fields['note_public']) || isset($object->fields['note_private'])) { - $nbNote = 0; - if (!empty($object->note_private)) { - $nbNote++; - } - if (!empty($object->note_public)) { - $nbNote++; - } - $head[$h][0] = dol_buildpath('/mymodule/myobject_note.php', 1).'?id='.$object->id; - $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) { - $head[$h][1] .= (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? ''.$nbNote.'' : ''); - } - $head[$h][2] = 'note'; - $h++; - } - } - - if ($showtabofpagedocument) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->mymodule->dir_output."/myobject/".dol_sanitizeFileName($object->ref); - $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$')); - $nbLinks = Link::count($db, $object->element, $object->id); - $head[$h][0] = dol_buildpath("/mymodule/myobject_document.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles + $nbLinks) > 0) { - $head[$h][1] .= ''.($nbFiles + $nbLinks).''; - } - $head[$h][2] = 'document'; - $h++; - } - - if ($showtabofpageagenda) { - $head[$h][0] = dol_buildpath("/mymodule/myobject_agenda.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans("Events"); - $head[$h][2] = 'agenda'; - $h++; - } - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - //$this->tabs = array( - // 'entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__' - //); // to add new tab - //$this->tabs = array( - // 'entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__' - //); // to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'myobject@mymodule'); - - complete_head_from_modules($conf, $langs, $object, $head, $h, 'myobject@mymodule', 'remove'); - - return $head; -} diff --git a/htdocs/modulebuilder/template/modulebuilder.txt b/htdocs/modulebuilder/template/modulebuilder.txt deleted file mode 100644 index 670a1774..00000000 --- a/htdocs/modulebuilder/template/modulebuilder.txt +++ /dev/null @@ -1,3 +0,0 @@ -# DO NOT DELETE THIS FILE MANUALLY -# File to flag module built using official module template. -# When this file is present into a module directory, you can edit it with the module builder tool. \ No newline at end of file diff --git a/htdocs/modulebuilder/template/mymoduleindex.php b/htdocs/modulebuilder/template/mymoduleindex.php deleted file mode 100644 index 3b7b1b13..00000000 --- a/htdocs/modulebuilder/template/mymoduleindex.php +++ /dev/null @@ -1,251 +0,0 @@ - - * Copyright (C) 2004-2015 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2015 Jean-François Ferry - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/mymoduleindex.php - * \ingroup mymodule - * \brief Home page of mymodule top menu - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule")); - -$action = GETPOST('action', 'aZ09'); - -$max = 5; -$now = dol_now(); - -// Security check - Protection if external user -$socid = GETPOST('socid', 'int'); -if (isset($user->socid) && $user->socid > 0) { - $action = ''; - $socid = $user->socid; -} - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//if (!isModEnabled('mymodule')) { -// accessforbidden('Module not enabled'); -//} -//if (! $user->hasRight('mymodule', 'myobject', 'read')) { -// accessforbidden(); -//} -//restrictedArea($user, 'mymodule', 0, 'mymodule_myobject', 'myobject', '', 'rowid'); -//if (empty($user->admin)) { -// accessforbidden('Must be admin'); -//} - - -/* - * Actions - */ - -// None - - -/* - * View - */ - -$form = new Form($db); -$formfile = new FormFile($db); - -llxHeader("", $langs->trans("MyModuleArea")); - -print load_fiche_titre($langs->trans("MyModuleArea"), '', 'mymodule.png@mymodule'); - -print '
    '; - - -/* BEGIN MODULEBUILDER DRAFT MYOBJECT -// Draft MyObject -if (isModEnabled('mymodule') && $user->rights->mymodule->read) -{ - $langs->load("orders"); - - $sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ht, c.tva as total_tva, c.total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas"; - $sql.= ", s.code_client"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; - $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.fk_statut = 0"; - $sql.= " AND c.entity IN (".getEntity('commande').")"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id); - if ($socid) $sql.= " AND c.fk_soc = ".((int) $socid); - - $resql = $db->query($sql); - if ($resql) - { - $total = 0; - $num = $db->num_rows($resql); - - print '
    '; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->MYMODULE_MYOBJECT_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', $odtPath)); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -141,7 +148,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject if (!is_dir($tmpdir)) { $texttitle .= img_warning($langs->trans("ErrorDirNotFound", $tmpdir), 0); } else { - $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.(ods|odt)'); + $tmpfiles = dol_dir_list($tmpdir, 'files', 0, '\.html'); if (count($tmpfiles)) { $listoffiles = array_merge($listoffiles, $tmpfiles); } @@ -155,15 +162,15 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
    '; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories $nbofiles = count($listoffiles); - if (!empty($conf->global->MYMODULE_MYOBJECT_ADDON_PDF_ODT_PATH)) { + if (!empty($odtPath)) { $texte .= $langs->trans("NumberOfModelFilesFound").': '; //$texte.=$nbofiles?'':''; $texte .= count($listoffiles); @@ -175,13 +182,38 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $texte .= ''; - } + // Set default template for different status of proposal + if ($odtChosen) { + // Model for creation + $list = ModelePDFPropales::liste_modeles($this->db); + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= '"; + + $texte .= ''; + $texte .= ''; + $texte .= '"; + $texte .= ''; + + $texte .= ''; + $texte .= '"; + $texte .= '
    '.$langs->trans("DefaultModelPropalCreate").''; + $texte .= $form->selectarray('value2', $list, getDolGlobalString('PROPALE_ADDON_PDF_HTML_DEFAULT')); + $texte .= "
    '.$langs->trans("DefaultModelPropalToBill").''; + $texte .= $form->selectarray('value3', $list, getDolGlobalString('PROPALE_ADDON_PDF_HTML_TOBILL')); + $texte .= "
    '.$langs->trans("DefaultModelPropalClosed").''; + $texte .= $form->selectarray('value4', $list, getDolGlobalString('PROPALE_ADDON_PDF_HTML_CLOSED')); + $texte .= "
    '; + } + } // Add input to upload a new template file. $texte .= '
    '.$langs->trans("UploadNewTemplate"); $maxfilesizearray = getMaxFileSizeArray(); @@ -190,10 +222,9 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $texte .= ''; // MAX_FILE_SIZE must precede the field type=file } $texte .= ' '; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= '
    '; - $texte .= '
    '; @@ -211,9 +242,9 @@ class doc_generic_myobject_odt extends ModelePDFMyObject // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Function to build a document on disk using the generic odt module. + * Function to build a document on disk using the generic odt module. * - * @param MyObject $object Object source to build document + * @param Propal $object Object source to build document * @param Translate $outputlangs Lang output object * @param string $srctemplatepath Full path of source filename for generator using a template file * @param int $hidedetails Do not show line details @@ -245,13 +276,14 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $sav_charset_output = $outputlangs->charset_output; $outputlangs->charset_output = 'UTF-8'; + // Load translation files required by the page $outputlangs->loadLangs(array("main", "dict", "companies", "bills")); - if ($conf->mymodule->dir_output) { + if ($conf->propal->multidir_output[$conf->entity]) { // If $object is id instead of object if (!is_object($object)) { $id = $object; - $object = new MyObject($this->db); + $object = new Propal($this->db); $result = $object->fetch($id); if ($result < 0) { dol_print_error($this->db, $object->error); @@ -261,7 +293,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $object->fetch_thirdparty(); - $dir = $conf->mymodule->multidir_output[isset($object->entity) ? $object->entity : 1]; + $dir = $conf->propal->multidir_output[$object->entity]; $objectref = dol_sanitizeFileName($object->ref); if (!preg_match('/specimen/i', $objectref)) { $dir .= "/".$objectref; @@ -283,7 +315,6 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); $newfiletmp = $objectref . '_' . $newfiletmp; - //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -300,16 +331,16 @@ class doc_generic_myobject_odt extends ModelePDFMyObject //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; - //print "conf->societe->dir_temp=".$conf->societe->dir_temp; + //print "conf->propal->dir_temp=".$conf->propal->dir_temp; - dol_mkdir($conf->mymodule->dir_temp); - if (!is_writable($conf->mymodule->dir_temp)) { - $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->mymodule->dir_temp); + dol_mkdir($conf->propal->multidir_temp[$object->entity]); + if (!is_writable($conf->propal->dir_temp)) { + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->propal->dir_temp); dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } - // If CUSTOMER contact defined on object, we use it + // If CUSTOMER contact defined on proposal, we use it $usecontact = false; $arrayidcontact = $object->getIdContact('external', 'CUSTOMER'); if (count($arrayidcontact) > 0) { @@ -333,14 +364,13 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } else { $socobject = $object->thirdparty; } - // Make substitution $substitutionarray = array( - '__FROM_NAME__' => $this->emetteur->name, - '__FROM_EMAIL__' => $this->emetteur->email, - '__TOTAL_TTC__' => $object->total_ttc, - '__TOTAL_HT__' => $object->total_ht, - '__TOTAL_VAT__' => $object->total_tva + '__FROM_NAME__' => $this->emetteur->name, + '__FROM_EMAIL__' => $this->emetteur->email, + '__TOTAL_TTC__' => $object->total_ttc, + '__TOTAL_HT__' => $object->total_ht, + '__TOTAL_VAT__' => $object->total_tva ); complete_substitutions_array($substitutionarray, $langs, $object); // Call the ODTSubstitution hook @@ -349,7 +379,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject // Line of free text $newfreetext = ''; - $paramfreetext = 'MYMODULE_MYOBJECT_FREE_TEXT'; + $paramfreetext = 'PROPOSAL_FREE_TEXT'; if (!empty($conf->global->$paramfreetext)) { $newfreetext = make_substitutions($conf->global->$paramfreetext, $substitutionarray); } @@ -360,7 +390,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $odfHandler = new odf( $srctemplatepath, array( - 'PATH_TO_TMP' => $conf->mymodule->dir_temp, + 'PATH_TO_TMP' => $conf->propal->multidir_temp[$object->entity], 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' @@ -377,6 +407,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject //print html_entity_decode($odfHandler->__toString()); //print exit; + $object->fetch_optionals(); // Make substitutions into odt of freetext try { @@ -408,15 +439,14 @@ class doc_generic_myobject_odt extends ModelePDFMyObject foreach ($tmparray as $key => $value) { try { - if (preg_match('/logo$/', $key)) { - // Image + if (preg_match('/logo$/', $key)) { // Image if (file_exists($value)) { $odfHandler->setImage($key, $value); } else { $odfHandler->setVars($key, 'ErrorFileNotFound', true, 'UTF-8'); } - } else { - // Text + } else // Text + { $odfHandler->setVars($key, $value, true, 'UTF-8'); } } catch (OdfException $e) { @@ -472,12 +502,11 @@ class doc_generic_myobject_odt extends ModelePDFMyObject } // Call the beforeODTSave hook - $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray); $reshook = $hookmanager->executeHooks('beforeODTSave', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks // Write new file - if (!empty($conf->global->MAIN_ODT_AS_PDF)) { + if (!empty($conf->global->MAIN_HTML_AS_PDF)) { try { $odfHandler->exportAsAttachedPDF($file); } catch (Exception $e) { @@ -494,7 +523,6 @@ class doc_generic_myobject_odt extends ModelePDFMyObject return -1; } } - $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray); $reshook = $hookmanager->executeHooks('afterODTCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks diff --git a/htdocs/core/modules/propale/doc/pdf_peitureteufela.modules.php b/htdocs/core/modules/propale/doc/pdf_peitureteufela.modules.php new file mode 100644 index 00000000..797e9dd2 --- /dev/null +++ b/htdocs/core/modules/propale/doc/pdf_peitureteufela.modules.php @@ -0,0 +1,2080 @@ + + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2008 Raphael Bertrand + * Copyright (C) 2010-2015 Juanjo Menent + * Copyright (C) 2012 Christophe Battarel + * Copyright (C) 2012 Cedric Salvador + * Copyright (C) 2015 Marcos García + * Copyright (C) 2017 Ferran Marcet + * Copyright (C) 2018 Frédéric France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see https://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/propale/doc/pdf_cyan.modules.php + * \ingroup propale + * \brief File of Class to generate PDF proposal with Cyan template + */ +require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; + + +/** + * Class to generate PDF proposal Cyan + */ +class pdf_peitureteufela extends ModelePDFPropales +{ + /** + * @var DoliDb Database handler + */ + public $db; + + /** + * @var string model name + */ + public $name; + + /** + * @var string model description (short text) + */ + public $description; + + /** + * @var int Save the name of generated file as the main doc when generating a doc with this template + */ + public $update_main_doc_field; + + /** + * @var string document type + */ + public $type; + + /** + * @var array Minimum version of PHP required by module. + * e.g.: PHP ≥ 7.0 = array(7, 0) + */ + public $phpmin = array(7, 0); + + /** + * Dolibarr version of the loaded document + * @var string + */ + public $version = 'dolibarr'; + + /** + * @var int page_largeur + */ + public $page_largeur; + + /** + * @var int page_hauteur + */ + public $page_hauteur; + + /** + * @var array format + */ + public $format; + + /** + * @var int marge_gauche + */ + public $marge_gauche; + + /** + * @var int marge_droite + */ + public $marge_droite; + + /** + * @var int marge_haute + */ + public $marge_haute; + + /** + * @var int marge_basse + */ + public $marge_basse; + + /** + * Issuer + * @var Societe Object that emits + */ + public $emetteur; + + /** + * @var array of document table columns + */ + public $cols; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + global $conf, $langs, $mysoc; + + // Translations + $langs->loadLangs(array("main", "bills")); + + $this->db = $db; + $this->name = "Peinture Teufel Angebot"; + $this->description = $langs->trans('DocModelCyanDescription'); + $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template + + // Dimension page + $this->type = 'pdf'; + $formatarray = pdf_getFormat(); + $this->page_largeur = $formatarray['width']; + $this->page_hauteur = $formatarray['height']; + $this->format = array($this->page_largeur, $this->page_hauteur); + $this->marge_gauche = getDolGlobalInt('MAIN_PDF_MARGIN_LEFT', 10); + $this->marge_droite = getDolGlobalInt('MAIN_PDF_MARGIN_RIGHT', 10); + $this->marge_haute = getDolGlobalInt('MAIN_PDF_MARGIN_TOP', 10); + $this->marge_basse = getDolGlobalInt('MAIN_PDF_MARGIN_BOTTOM', 10); + + $this->option_logo = 1; // Display logo + $this->option_tva = 1; // Manage the vat option FACTURE_TVAOPTION + $this->option_modereg = 1; // Display payment mode + $this->option_condreg = 1; // Display payment terms + $this->option_multilang = 1; // Available in several languages + $this->option_escompte = 0; // Displays if there has been a discount + $this->option_credit_note = 0; // Support credit notes + $this->option_freetext = 1; // Support add of a personalised text + $this->option_draft_watermark = 1; // Support add of a watermark on drafts + $this->watermark = ''; + + // Get source company + $this->emetteur = $mysoc; + if (empty($this->emetteur->country_code)) { + $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default, if was not defined + } + + // Define position of columns + $this->posxdesc = $this->marge_gauche + 1; // used for notes ans other stuff + + + $this->tabTitleHeight = 5; // default height + + // Use new system for position of columns, view $this->defineColumnField() + + $this->tva = array(); + $this->tva_array = array(); + $this->localtax1 = array(); + $this->localtax2 = array(); + $this->atleastoneratenotnull = 0; + $this->atleastonediscount = 0; + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Function to build pdf onto disk + * + * @param Propal $object Object to generate + * @param Translate $outputlangs Lang output object + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @return int 1=OK, 0=KO + */ + public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0) + { + // phpcs:enable + global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblines; + + dol_syslog("write_file outputlangs->defaultlang=".(is_object($outputlangs) ? $outputlangs->defaultlang : 'null')); + + if (!is_object($outputlangs)) { + $outputlangs = $langs; + } + // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO + if (!empty($conf->global->MAIN_USE_FPDF)) { + $outputlangs->charset_output = 'ISO-8859-1'; + } + + // Load translation files required by page + $outputlangs->loadLangs(array("main", "dict", "companies", "bills", "products", "propal")); + + // Show Draft Watermark + if ($object->statut == $object::STATUS_DRAFT && getDolGlobalString('PROPALE_DRAFT_WATERMARK')) { + $this->watermark = getDolGlobalString('PROPALE_DRAFT_WATERMARK'); + } + + global $outputlangsbis; + $outputlangsbis = null; + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) { + $outputlangsbis = new Translate('', $conf); + $outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE); + $outputlangsbis->loadLangs(array("main", "dict", "companies", "bills", "products", "propal")); + } + + $nblines = count($object->lines); + + $hidetop = 0; + if (!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)) { + $hidetop = $conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE; + } + + // Loop on each lines to detect if there is at least one image to show + $realpatharray = array(); + $this->atleastonephoto = false; + if (!empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE)) { + $objphoto = new Product($this->db); + + for ($i = 0; $i < $nblines; $i++) { + if (empty($object->lines[$i]->fk_product)) { + continue; + } + + $objphoto->fetch($object->lines[$i]->fk_product); + //var_dump($objphoto->ref);exit; + if (getDolGlobalInt('PRODUCT_USE_OLD_PATH_FOR_PHOTO')) { + $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; + $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; + } else { + $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product'); // default + $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative + } + + $arephoto = false; + foreach ($pdir as $midir) { + if (!$arephoto) { + if ($conf->entity != $objphoto->entity) { + $dir = $conf->product->multidir_output[$objphoto->entity].'/'.$midir; //Check repertories of current entities + } else { + $dir = $conf->product->dir_output.'/'.$midir; //Check repertory of the current product + } + + foreach ($objphoto->liste_photos($dir, 1) as $key => $obj) { + if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo + if ($obj['photo_vignette']) { + $filename = $obj['photo_vignette']; + } else { + $filename = $obj['photo']; + } + } else { + $filename = $obj['photo']; + } + + $realpath = $dir.$filename; + $arephoto = true; + $this->atleastonephoto = true; + } + } + } + + if ($realpath && $arephoto) { + $realpatharray[$i] = $realpath; + } + } + } + + if (count($realpatharray) == 0) { + $this->posxpicture = $this->posxtva; + } + + if ($conf->propal->multidir_output[$conf->entity]) { + $object->fetch_thirdparty(); + + $deja_regle = 0; + + // Definition of $dir and $file + if ($object->specimen) { + $dir = $conf->propal->multidir_output[$conf->entity]; + $file = $dir."/SPECIMEN.pdf"; + } else { + $objectref = dol_sanitizeFileName($object->ref); + $dir = $conf->propal->multidir_output[$object->entity]."/".$objectref; + $file = $dir."/".$objectref.".pdf"; + } + + if (!file_exists($dir)) { + if (dol_mkdir($dir) < 0) { + $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); + return 0; + } + } + + if (file_exists($dir)) { + // Add pdfgeneration hook + if (!is_object($hookmanager)) { + include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; + $hookmanager = new HookManager($this->db); + } + $hookmanager->initHooks(array('pdfgeneration')); + $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs); + global $action; + $reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + + // Set nblines with the new content of lines after hook + $nblines = count($object->lines); + //$nbpayments = count($object->getListOfPayments()); + + // Create pdf instance + $pdf = pdf_getInstance($this->format); + $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance + $pdf->SetAutoPageBreak(1, 0); + + if (class_exists('TCPDF')) { + $pdf->setPrintHeader(false); + $pdf->setPrintFooter(false); + } + $pdf->SetFont(pdf_getPDFFont($outputlangs)); + // Set path to the background PDF File + if (!empty($conf->global->MAIN_ADD_PDF_BACKGROUND)) { + $logodir = $conf->mycompany->dir_output; + if (!empty($conf->mycompany->multidir_output[$object->entity])) { + $logodir = $conf->mycompany->multidir_output[$object->entity]; + } + $pagecount = $pdf->setSourceFile($logodir.'/'.$conf->global->MAIN_ADD_PDF_BACKGROUND); + $tplidx = $pdf->importPage(1); + } + + $pdf->Open(); + $pagenb = 0; + $pdf->SetDrawColor(128, 128, 128); + + $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); + $pdf->SetSubject($outputlangs->transnoentities("PdfCommercialProposalTitle")); + $pdf->SetCreator("Dolibarr ".DOL_VERSION); + $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); + $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("PdfCommercialProposalTitle")." ".$outputlangs->convToOutputCharset($object->thirdparty->name)); + if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) { + $pdf->SetCompression(false); + } + + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right + + // Set $this->atleastonediscount if you have at least one discount + for ($i = 0; $i < $nblines; $i++) { + if ($object->lines[$i]->remise_percent) { + $this->atleastonediscount++; + } + } + + + // New page + $pdf->AddPage(); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + $pagenb++; + + $heightforinfotot = 40; // Height reserved to output the info and total part + $heightforsignature = empty($conf->global->PROPAL_DISABLE_SIGNATURE) ? (pdfGetHeightForHtmlContent($pdf, $outputlangs->transnoentities("ProposalCustomerSignature")) + 10) : 0; + $heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page + $heightforfooter = $this->marge_basse + (empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? 12 : 22); // Height reserved to output the footer (value include bottom margin) + //print $heightforinfotot + $heightforsignature + $heightforfreetext + $heightforfooter;exit; + + $top_shift = $this->_pagehead($pdf, $object, 1, $outputlangs, $outputlangsbis); + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->MultiCell(0, 3, ''); // Set interline to 3 + $pdf->SetTextColor(0, 0, 0); + + + $tab_top = 90 + $top_shift; + $tab_top_newpage = (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD') ? 42 + $top_shift : 10); + + + // Incoterm + $height_incoterms = 0; + if (isModEnabled('incoterm')) { + $desc_incoterms = $object->getIncotermsForPDF(); + if ($desc_incoterms) { + $tab_top -= 2; + + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top - 1, dol_htmlentitiesbr($desc_incoterms), 0, 1); + $nexY = max($pdf->GetY(), $nexY); + $height_incoterms = $nexY - $tab_top; + + // Rect takes a length in 3rd parameter + $pdf->SetDrawColor(192, 192, 192); + $pdf->Rect($this->marge_gauche, $tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_incoterms + 1); + + $tab_top = $nexY + 6; + $height_incoterms += 4; + } + } + + // Displays notes + $notetoshow = empty($object->note_public) ? '' : $object->note_public; + if (!empty($conf->global->MAIN_ADD_SALE_REP_SIGNATURE_IN_NOTE)) { + // Get first sale rep + if (is_object($object->thirdparty)) { + $salereparray = $object->thirdparty->getSalesRepresentatives($user); + $salerepobj = new User($this->db); + $salerepobj->fetch($salereparray[0]['id']); + if (!empty($salerepobj->signature)) { + $notetoshow = dol_concatdesc($notetoshow, $salerepobj->signature); + } + } + } + + // Extrafields in note + $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); + // if (!empty($extranote)) { + // $notetoshow = dol_concatdesc($notetoshow, $extranote); + // } + + if (!empty($conf->global->MAIN_ADD_CREATOR_IN_NOTE) && $object->user_author_id > 0) { + $tmpuser = new User($this->db); + $tmpuser->fetch($object->user_author_id); + + $creator_info = $langs->trans("CaseFollowedBy").' '.$tmpuser->getFullName($langs); + if ($tmpuser->email) $creator_info .= ', '.$langs->trans("EMail").': '.$tmpuser->email; + if ($tmpuser->office_phone) $creator_info .= ', '.$langs->trans("Phone").': '.$tmpuser->office_phone; + + $notetoshow = dol_concatdesc($notetoshow, $creator_info); + } + + $tab_height = $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter; + + $pagenb = $pdf->getPage(); + if ($notetoshow) { + $tab_top -= 2; + + $tab_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; + $pageposbeforenote = $pagenb; + + $substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object); + complete_substitutions_array($substitutionarray, $outputlangs, $object); + $notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs); + $notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow); + + $pdf->startTransaction(); + + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); + // Description + $pageposafternote = $pdf->getPage(); + $posyafter = $pdf->GetY(); + + if ($pageposafternote > $pageposbeforenote) { + $pdf->rollbackTransaction(true); + + // prepare pages to receive notes + while ($pagenb < $pageposafternote) { + $pdf->AddPage(); + $pagenb++; + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + if (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD')) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } + // $this->_pagefoot($pdf,$object,$outputlangs,1); + $pdf->setTopMargin($tab_top_newpage); + // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); + } + + // back to start + $pdf->setPage($pageposbeforenote); + $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); + $pageposafternote = $pdf->getPage(); + + $posyafter = $pdf->GetY(); + + if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { // There is no space left for total+free text + $pdf->AddPage('', '', true); + $pagenb++; + $pageposafternote++; + $pdf->setPage($pageposafternote); + $pdf->setTopMargin($tab_top_newpage); + // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); + //$posyafter = $tab_top_newpage; + } + + + // apply note frame to previous pages + $i = $pageposbeforenote; + while ($i < $pageposafternote) { + $pdf->setPage($i); + + + $pdf->SetDrawColor(128, 128, 128); + // Draw note frame + if ($i > $pageposbeforenote) { + $height_note = $this->page_hauteur - ($tab_top_newpage + $heightforfooter); + $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); + } else { + $height_note = $this->page_hauteur - ($tab_top + $heightforfooter); + $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); + } + + // Add footer + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + $this->_pagefoot($pdf, $object, $outputlangs, 1); + + $i++; + } + + // apply note frame to last page + $pdf->setPage($pageposafternote); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + if (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD')) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } + $height_note = $posyafter - $tab_top_newpage; + $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); + } else { + // No pagebreak + $pdf->commitTransaction(); + $posyafter = $pdf->GetY(); + $height_note = $posyafter - $tab_top; + $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); + + + if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { + // not enough space, need to add page + $pdf->AddPage('', '', true); + $pagenb++; + $pageposafternote++; + $pdf->setPage($pageposafternote); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + if (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD')) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } + + $posyafter = $tab_top_newpage; + } + } + $tab_height = $tab_height - $height_note; + $tab_top = $posyafter + 6; + } else { + $height_note = 0; + } + + // Use new auto column system + $this->prepareArrayColumnField($object, $outputlangs, $hidedetails, $hidedesc, $hideref); + + // Table simulation to know the height of the title line + $pdf->startTransaction(); + $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop); + $pdf->rollbackTransaction(true); + + $nexY = $tab_top + $this->tabTitleHeight; + + // Loop on each lines + $pageposbeforeprintlines = $pdf->getPage(); + $pagenb = $pageposbeforeprintlines; + for ($i = 0; $i < $nblines; $i++) { + $curY = $nexY; + $pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage + $pdf->SetTextColor(0, 0, 0); + + // Define size of image if we need it + $imglinesize = array(); + if (!empty($realpatharray[$i])) { + $imglinesize = pdf_getSizeForImage($realpatharray[$i]); + } + + $pdf->setTopMargin($tab_top_newpage); + $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext + $heightforsignature + $heightforinfotot); // The only function to edit the bottom margin of current page to set it. + $pageposbefore = $pdf->getPage(); + + $showpricebeforepagebreak = 1; + $posYAfterImage = 0; + $posYAfterDescription = 0; + + if ($this->getColumnStatus('photo')) { + // We start with Photo of product line + if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforsignature + $heightforinfotot))) { // If photo too high, we moved completely on new page + $pdf->AddPage('', '', true); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + $pdf->setPage($pageposbefore + 1); + + $curY = $tab_top_newpage; + + // Allows data in the first page if description is long enough to break in multiples pages + if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) { + $showpricebeforepagebreak = 1; + } else { + $showpricebeforepagebreak = 0; + } + } + + + if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height'])) { + $pdf->Image($realpatharray[$i], $this->getColumnContentXStart('photo'), $curY + 1, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi + // $pdf->Image does not increase value return by getY, so we save it manually + $posYAfterImage = $curY + $imglinesize['height']; + } + } + + // Description of product line + if ($this->getColumnStatus('desc')) { + $pdf->startTransaction(); + + $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); + $pageposafter = $pdf->getPage(); + + if ($pageposafter > $pageposbefore) { // There is a pagebreak + $pdf->rollbackTransaction(true); + + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + + $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); + + $pageposafter = $pdf->getPage(); + $posyafter = $pdf->GetY(); + //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; + if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforsignature + $heightforinfotot))) { // There is no space left for total+free text + if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page + $pdf->AddPage('', '', true); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + $pdf->setPage($pageposafter + 1); + } + } else { + // We found a page break + // Allows data in the first page if description is long enough to break in multiples pages + if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) { + $showpricebeforepagebreak = 1; + } else { + $showpricebeforepagebreak = 0; + } + } + } else // No pagebreak + { + $pdf->commitTransaction(); + } + $posYAfterDescription = $pdf->GetY(); + } + + $nexY = $pdf->GetY(); + $pageposafter = $pdf->getPage(); + + $pdf->setPage($pageposbefore); + $pdf->setTopMargin($this->marge_haute); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + + // We suppose that a too long description or photo were moved completely on next page + if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { + $pdf->setPage($pageposafter); + $curY = $tab_top_newpage; + } + + $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font + + // VAT Rate + if ($this->getColumnStatus('vat')) { + $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'vat', $vat_rate); + $nexY = max($pdf->GetY(), $nexY); + } + + // Unit price before discount + if ($this->getColumnStatus('subprice')) { + $up_excl_tax = pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'subprice', $up_excl_tax); + $nexY = max($pdf->GetY(), $nexY); + } + + // Quantity + // Enough for 6 chars + if ($this->getColumnStatus('qty')) { + $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'qty', $qty); + $nexY = max($pdf->GetY(), $nexY); + } + + + // Unit + if ($this->getColumnStatus('unit')) { + $unit = pdf_getlineunit($object, $i, $outputlangs, $hidedetails, $hookmanager); + $this->printStdColumnContent($pdf, $curY, 'unit', $unit); + $nexY = max($pdf->GetY(), $nexY); + } + + // Discount on line + if ($this->getColumnStatus('discount') && $object->lines[$i]->remise_percent) { + $remise_percent = pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'discount', $remise_percent); + $nexY = max($pdf->GetY(), $nexY); + } + + // Total excl tax line (HT) + if ($this->getColumnStatus('totalexcltax')) { + $total_excl_tax = pdf_getlinetotalexcltax($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'totalexcltax', $total_excl_tax); + $nexY = max($pdf->GetY(), $nexY); + } + + // Total with tax line (TTC) + if ($this->getColumnStatus('totalincltax')) { + $total_incl_tax = pdf_getlinetotalwithtax($object, $i, $outputlangs, $hidedetails); + $this->printStdColumnContent($pdf, $curY, 'totalincltax', $total_incl_tax); + $nexY = max($pdf->GetY(), $nexY); + } + + // Extrafields + if (!empty($object->lines[$i]->array_options)) { + foreach ($object->lines[$i]->array_options as $extrafieldColKey => $extrafieldValue) { + if ($this->getColumnStatus($extrafieldColKey)) { + $extrafieldValue = $this->getExtrafieldContent($object->lines[$i], $extrafieldColKey, $outputlangs); + $this->printStdColumnContent($pdf, $curY, $extrafieldColKey, $extrafieldValue); + $nexY = max($pdf->GetY(), $nexY); + } + } + } + + $parameters = array( + 'object' => $object, + 'i' => $i, + 'pdf' =>& $pdf, + 'curY' =>& $curY, + 'nexY' =>& $nexY, + 'outputlangs' => $outputlangs, + 'hidedetails' => $hidedetails + ); + $reshook = $hookmanager->executeHooks('printPDFline', $parameters, $this); // Note that $object may have been modified by hook + + + // Collection of totals by value of vat in $this->tva["rate"] = total_tva + if (isModEnabled("multicurrency") && $object->multicurrency_tx != 1) { + $tvaligne = $object->lines[$i]->multicurrency_total_tva; + } else { + $tvaligne = $object->lines[$i]->total_tva; + } + + $localtax1ligne = $object->lines[$i]->total_localtax1; + $localtax2ligne = $object->lines[$i]->total_localtax2; + $localtax1_rate = $object->lines[$i]->localtax1_tx; + $localtax2_rate = $object->lines[$i]->localtax2_tx; + $localtax1_type = $object->lines[$i]->localtax1_type; + $localtax2_type = $object->lines[$i]->localtax2_type; + + if ($object->remise_percent) { + $tvaligne -= ($tvaligne * $object->remise_percent) / 100; + } + if ($object->remise_percent) { + $localtax1ligne -= ($localtax1ligne * $object->remise_percent) / 100; + } + if ($object->remise_percent) { + $localtax2ligne -= ($localtax2ligne * $object->remise_percent) / 100; + } + + $vatrate = (string) $object->lines[$i]->tva_tx; + + // Retrieve type from database for backward compatibility with old records + if ((!isset($localtax1_type) || $localtax1_type == '' || !isset($localtax2_type) || $localtax2_type == '') // if tax type not defined + && (!empty($localtax1_rate) || !empty($localtax2_rate))) { // and there is local tax + $localtaxtmp_array = getLocalTaxesFromRate($vatrate, 0, $object->thirdparty, $mysoc); + $localtax1_type = isset($localtaxtmp_array[0]) ? $localtaxtmp_array[0] : ''; + $localtax2_type = isset($localtaxtmp_array[2]) ? $localtaxtmp_array[2] : ''; + } + + // retrieve global local tax + if ($localtax1_type && $localtax1ligne != 0) { + $this->localtax1[$localtax1_type][$localtax1_rate] += $localtax1ligne; + } + if ($localtax2_type && $localtax2ligne != 0) { + $this->localtax2[$localtax2_type][$localtax2_rate] += $localtax2ligne; + } + + if (($object->lines[$i]->info_bits & 0x01) == 0x01) { + $vatrate .= '*'; + } + + // Fill $this->tva and $this->tva_array + if (!isset($this->tva[$vatrate])) { + $this->tva[$vatrate] = 0; + } + $this->tva[$vatrate] += $tvaligne; + $vatcode = $object->lines[$i]->vat_src_code; + if (empty($this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'])) { + $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] = 0; + } + $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')] = array('vatrate'=>$vatrate, 'vatcode'=>$vatcode, 'amount'=> $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] + $tvaligne); + + if ($posYAfterImage > $posYAfterDescription) { + $nexY = max($nexY, $posYAfterImage); + } + + // Add line + if (!empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1)) { + $pdf->setPage($pageposafter); + $pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80, 80, 80))); + //$pdf->SetDrawColor(190,190,200); + $pdf->line($this->marge_gauche, $nexY + 1, $this->page_largeur - $this->marge_droite, $nexY + 1); + $pdf->SetLineStyle(array('dash'=>0)); + } + + $nexY += 2; // Add space between lines + + // Detect if some page were added automatically and output _tableau for past pages + while ($pagenb < $pageposafter) { + $pdf->setPage($pagenb); + if ($pagenb == $pageposbeforeprintlines) { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); + } else { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); + } + $this->_pagefoot($pdf, $object, $outputlangs, 1); + $pagenb++; + $pdf->setPage($pagenb); + $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + if (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD')) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + } + + if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) { + if ($pagenb == $pageposafter) { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); + } else { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); + } + $this->_pagefoot($pdf, $object, $outputlangs, 1); + // New page + $pdf->AddPage(); + if (!empty($tplidx)) { + $pdf->useTemplate($tplidx); + } + $pagenb++; + if (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD')) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } + } + } + + // Show square + if ($pagenb == $pageposbeforeprintlines) { + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code, $outputlangsbis); + $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; + } else { + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code, $outputlangsbis); + $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforsignature - $heightforfooter + 1; + } + + // Display infos area + $posy = $this->drawInfoTable($pdf, $object, $bottomlasttab, $outputlangs); + + // Display total zone + $posy = $this->drawTotalTable($pdf, $object, 0, $bottomlasttab, $outputlangs); + + // Display payment area + /* + if ($deja_regle || $amount_credit_notes_included || $amount_deposits_included) + { + $posy=$this->drawPaymentsTable($pdf, $object, $posy, $outputlangs); + } + */ + + // Customer signature area + if (empty($conf->global->PROPAL_DISABLE_SIGNATURE)) { + $posy = $this->drawSignatureArea($pdf, $object, $posy, $outputlangs); + } + + // Pagefoot + $this->_pagefoot($pdf, $object, $outputlangs); + if (method_exists($pdf, 'AliasNbPages')) { + $pdf->AliasNbPages(); + } + + //If propal merge product PDF is active + if (!empty($conf->global->PRODUIT_PDF_MERGE_PROPAL)) { + require_once DOL_DOCUMENT_ROOT.'/product/class/propalmergepdfproduct.class.php'; + + $already_merged = array(); + foreach ($object->lines as $line) { + if (!empty($line->fk_product) && !(in_array($line->fk_product, $already_merged))) { + // Find the desire PDF + $filetomerge = new Propalmergepdfproduct($this->db); + + if (getDolGlobalInt('MAIN_MULTILANGS')) { + $filetomerge->fetch_by_product($line->fk_product, $outputlangs->defaultlang); + } else { + $filetomerge->fetch_by_product($line->fk_product); + } + + $already_merged[] = $line->fk_product; + + $product = new Product($this->db); + $product->fetch($line->fk_product); + + if ($product->entity != $conf->entity) { + $entity_product_file = $product->entity; + } else { + $entity_product_file = $conf->entity; + } + + // If PDF is selected and file is not empty + if (count($filetomerge->lines) > 0) { + foreach ($filetomerge->lines as $linefile) { + if (!empty($linefile->id) && !empty($linefile->file_name)) { + if (getDolGlobalInt('PRODUCT_USE_OLD_PATH_FOR_PHOTO')) { + if (isModEnabled("product")) { + $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; + } elseif (isModEnabled("service")) { + $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; + } + } else { + if (isModEnabled("product")) { + $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); + } elseif (isModEnabled("service")) { + $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); + } + } + + dol_syslog(get_class($this).':: upload_dir='.$filetomerge_dir, LOG_DEBUG); + + $infile = $filetomerge_dir.'/'.$linefile->file_name; + if (file_exists($infile) && is_readable($infile)) { + $pagecount = $pdf->setSourceFile($infile); + for ($i = 1; $i <= $pagecount; $i++) { + $tplIdx = $pdf->importPage($i); + if ($tplIdx !== false) { + $s = $pdf->getTemplatesize($tplIdx); + $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L'); + $pdf->useTemplate($tplIdx); + } else { + setEventMessages(null, array($infile.' cannot be added, probably protected PDF'), 'warnings'); + } + } + } + } + } + } + } + } + } + + $pdf->Close(); + + $pdf->Output($file, 'F'); + + //Add pdfgeneration hook + $hookmanager->initHooks(array('pdfgeneration')); + $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs); + global $action; + $reshook = $hookmanager->executeHooks('afterPDFCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook < 0) { + $this->error = $hookmanager->error; + $this->errors = $hookmanager->errors; + } + + if (!empty($conf->global->MAIN_UMASK)) { + @chmod($file, octdec($conf->global->MAIN_UMASK)); + } + + $this->result = array('fullpath'=>$file); + + return 1; // No error + } else { + $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); + return 0; + } + } else { + $this->error = $langs->trans("ErrorConstantNotDefined", "PROP_OUTPUTDIR"); + return 0; + } + } + + /** + * Show payments table + * + * @param TCPDF $pdf Object PDF + * @param Propal $object Object proposal + * @param int $posy Position y in PDF + * @param Translate $outputlangs Object langs for output + * @return int <0 if KO, >0 if OK + */ + protected function drawPaymentsTable(&$pdf, $object, $posy, $outputlangs) + { + } + + /** + * Show miscellaneous information (payment mode, payment term, ...) + * + * @param TCPDF $pdf Object PDF + * @param Propal $object Object to show + * @param int $posy Y + * @param Translate $outputlangs Langs object + * @return int Pos y + */ + public function drawInfoTable(&$pdf, $object, $posy, $outputlangs) + { + global $conf, $mysoc; + $default_font_size = pdf_getPDFFontSize($outputlangs); + + $pdf->SetFont('', '', $default_font_size - 1); + + // If France, show VAT mention if not applicable + if ($this->emetteur->country_code == 'FR' && empty($mysoc->tva_assuj)) { + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("VATIsNotUsedForInvoice"), 0, 'L', 0); + + $posy = $pdf->GetY() + 4; + } + + $posxval = 52; + if (!empty($conf->global->MAIN_PDF_DATE_TEXT)) { + $displaydate = "daytext"; + } else { + $displaydate = "day"; + } + + // Show shipping date + if (!empty($object->delivery_date)) { + $outputlangs->load("sendings"); + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("DateDeliveryPlanned").':'; + $pdf->MultiCell(80, 4, $titre, 0, 'L'); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $dlp = dol_print_date($object->delivery_date, $displaydate, false, $outputlangs, true); + $pdf->MultiCell(80, 4, $dlp, 0, 'L'); + + $posy = $pdf->GetY() + 1; + } elseif ($object->availability_code || $object->availability) { // Show availability conditions + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("AvailabilityPeriod").':'; + $pdf->MultiCell(80, 4, $titre, 0, 'L'); + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_availability = $outputlangs->transnoentities("AvailabilityType".$object->availability_code) != ('AvailabilityType'.$object->availability_code) ? $outputlangs->transnoentities("AvailabilityType".$object->availability_code) : $outputlangs->convToOutputCharset($object->availability); + $lib_availability = str_replace('\n', "\n", $lib_availability); + $pdf->MultiCell(80, 4, $lib_availability, 0, 'L'); + + $posy = $pdf->GetY() + 1; + } + + // Show delivery mode + if (empty($conf->global->PROPOSAL_PDF_HIDE_DELIVERYMODE) && $object->shipping_method_id > 0) { + $outputlangs->load("sendings"); + + $shipping_method_id = $object->shipping_method_id; + if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD) && !empty($this->emetteur->shipping_method_id)) { + $shipping_method_id = $this->emetteur->shipping_method_id; + } + $shipping_method_code = dol_getIdFromCode($this->db, $shipping_method_id, 'c_shipment_mode', 'rowid', 'code'); + $shipping_method_label = dol_getIdFromCode($this->db, $shipping_method_id, 'c_shipment_mode', 'rowid', 'libelle'); + + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("SendingMethod").':'; + $pdf->MultiCell(43, 4, $titre, 0, 'L'); + + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_condition_paiement = ($outputlangs->transnoentities("SendingMethod".strtoupper($shipping_method_code)) != "SendingMethod".strtoupper($shipping_method_code)) ? $outputlangs->trans("SendingMethod".strtoupper($shipping_method_code)) : $shipping_method_label; + $lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement); + $pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L'); + + $posy = $pdf->GetY() + 1; + } + + // Show payments conditions + if (empty($conf->global->PROPOSAL_PDF_HIDE_PAYMENTTERM) && $object->cond_reglement_code) { + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("PaymentConditions").':'; + $pdf->MultiCell(43, 4, $titre, 0, 'L'); + + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_condition_paiement = $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) != ('PaymentCondition'.$object->cond_reglement_code) ? $outputlangs->transnoentities("PaymentCondition".$object->cond_reglement_code) : $outputlangs->convToOutputCharset($object->cond_reglement_doc ? $object->cond_reglement_doc : $object->cond_reglement_label); + $lib_condition_paiement = str_replace('\n', "\n", $lib_condition_paiement); + if ($object->deposit_percent > 0) { + $lib_condition_paiement = str_replace('__DEPOSIT_PERCENT__', $object->deposit_percent, $lib_condition_paiement); + } + $pdf->MultiCell(67, 4, $lib_condition_paiement, 0, 'L'); + + $posy = $pdf->GetY() + 3; + } + + if (empty($conf->global->PROPOSAL_PDF_HIDE_PAYMENTMODE)) { + // Show payment mode + if ($object->mode_reglement_code + && $object->mode_reglement_code != 'CHQ' + && $object->mode_reglement_code != 'VIR') { + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("PaymentMode").':'; + $pdf->MultiCell(80, 5, $titre, 0, 'L'); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_mode_reg = $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) != ('PaymentType'.$object->mode_reglement_code) ? $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) : $outputlangs->convToOutputCharset($object->mode_reglement); + $pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L'); + + $posy = $pdf->GetY() + 2; + } + + // Show payment mode CHQ + if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'CHQ') { + // Si mode reglement non force ou si force a CHQ + if (!empty($conf->global->FACTURE_CHQ_NUMBER)) { + $diffsizetitle = (empty($conf->global->PDF_DIFFSIZE_TITLE) ? 3 : $conf->global->PDF_DIFFSIZE_TITLE); + + if ($conf->global->FACTURE_CHQ_NUMBER > 0) { + $account = new Account($this->db); + $account->fetch($conf->global->FACTURE_CHQ_NUMBER); + + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('', 'B', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo', $account->proprio), 0, 'L', 0); + $posy = $pdf->GetY() + 1; + + if (empty($conf->global->MAIN_PDF_HIDE_CHQ_ADDRESS)) { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('', '', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($account->owner_address), 0, 'L', 0); + $posy = $pdf->GetY() + 2; + } + } + if ($conf->global->FACTURE_CHQ_NUMBER == -1) { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('', 'B', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo', $this->emetteur->name), 0, 'L', 0); + $posy = $pdf->GetY() + 1; + + if (empty($conf->global->MAIN_PDF_HIDE_CHQ_ADDRESS)) { + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetFont('', '', $default_font_size - $diffsizetitle); + $pdf->MultiCell(100, 3, $outputlangs->convToOutputCharset($this->emetteur->getFullAddress()), 0, 'L', 0); + $posy = $pdf->GetY() + 2; + } + } + } + } + + // If payment mode not forced or forced to VIR, show payment with BAN + if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'VIR') { + if ($object->fk_account > 0 || $object->fk_bank > 0 || getDolGlobalInt('FACTURE_RIB_NUMBER')) { + $bankid = ($object->fk_account <= 0 ? $conf->global->FACTURE_RIB_NUMBER : $object->fk_account); + if ($object->fk_bank > 0) { + $bankid = $object->fk_bank; // For backward compatibility when object->fk_account is forced with object->fk_bank + } + $account = new Account($this->db); + $account->fetch($bankid); + + $curx = $this->marge_gauche; + $cury = $posy; + + $posy = pdf_bank($pdf, $outputlangs, $curx, $cury, $account, 0, $default_font_size); + + $posy += 2; + } + } + } + + return $posy; + } + + + /** + * Show total to pay + * + * @param TCPDF $pdf Object PDF + * @param Propal $object Object proposal + * @param int $deja_regle Amount already paid (in the currency of invoice) + * @param int $posy Position depart + * @param Translate $outputlangs Objet langs + * @param Translate $outputlangsbis Object lang for output bis + * @return int Position pour suite + */ + protected function drawTotalTable(&$pdf, $object, $deja_regle, $posy, $outputlangs, $outputlangsbis = null) + { + global $conf, $mysoc, $hookmanager; + + $default_font_size = pdf_getPDFFontSize($outputlangs); + + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) { + $outputlangsbis = new Translate('', $conf); + $outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE); + $outputlangsbis->loadLangs(array("main", "dict", "companies", "bills", "products", "propal")); + $default_font_size--; + } + + $tab2_top = $posy; + $tab2_hl = 4; + $pdf->SetFont('', '', $default_font_size - 1); + + // Total table + $col1x = 120; + $col2x = 170; + if ($this->page_largeur < 210) { // To work with US executive format + $col2x -= 20; + } + $largcol2 = ($this->page_largeur - $this->marge_droite - $col2x); + + $useborder = 0; + $index = 0; + + // Total HT + $pdf->SetFillColor(255, 255, 255); + $pdf->SetXY($col1x, $tab2_top + 0); + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalHT") : ''), 0, 'L', 1); + + $total_ht = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $pdf->SetXY($col2x, $tab2_top + 0); + $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0), 0, $outputlangs), 0, 'R', 1); + + // Show VAT by rates and total + $pdf->SetFillColor(248, 248, 248); + + $total_ttc = (isModEnabled("multicurrency") && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + + $this->atleastoneratenotnull = 0; + if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) { + $tvaisnull = ((!empty($this->tva) && count($this->tva) == 1 && isset($this->tva['0.000']) && is_float($this->tva['0.000'])) ? true : false); + if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_IFNULL) && $tvaisnull) { + // Nothing to do + } else { + //Local tax 1 before VAT + //if (!empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') + //{ + foreach ($this->localtax1 as $localtax_type => $localtax_rate) { + if (in_array((string) $localtax_type, array('1', '3', '5'))) { + continue; + } + + foreach ($localtax_rate as $tvakey => $tvaval) { + if ($tvakey != 0) { // On affiche pas taux 0 + //$this->atleastoneratenotnull++; + + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + + $tvacompl = ''; + if (preg_match('/\*/', $tvakey)) { + $tvakey = str_replace('*', '', $tvakey); + $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; + } + $totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalLT1", $mysoc->country_code) : ''); + $totalvat .= ' '; + $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + //Local tax 2 before VAT + //if (!empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') + //{ + foreach ($this->localtax2 as $localtax_type => $localtax_rate) { + if (in_array((string) $localtax_type, array('1', '3', '5'))) { + continue; + } + + foreach ($localtax_rate as $tvakey => $tvaval) { + if ($tvakey != 0) { // On affiche pas taux 0 + //$this->atleastoneratenotnull++; + + + + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + + $tvacompl = ''; + if (preg_match('/\*/', $tvakey)) { + $tvakey = str_replace('*', '', $tvakey); + $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; + } + $totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalLT2", $mysoc->country_code) : ''); + $totalvat .= ' '; + $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + + // VAT + foreach ($this->tva as $tvakey => $tvaval) { + if ($tvakey != 0) { // On affiche pas taux 0 + $this->atleastoneratenotnull++; + + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + + $tvacompl = ''; + if (preg_match('/\*/', $tvakey)) { + $tvakey = str_replace('*', '', $tvakey); + $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; + } + $totalvat = $outputlangs->transcountrynoentities("TotalVAT", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalVAT", $mysoc->country_code) : ''); + $totalvat .= ' '; + $totalvat .= vatrate($tvakey, 1).$tvacompl; + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + + //Local tax 1 after VAT + //if (!empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) && $conf->global->FACTURE_LOCAL_TAX1_OPTION=='localtax1on') + //{ + foreach ($this->localtax1 as $localtax_type => $localtax_rate) { + if (in_array((string) $localtax_type, array('2', '4', '6'))) { + continue; + } + + foreach ($localtax_rate as $tvakey => $tvaval) { + if ($tvakey != 0) { // On affiche pas taux 0 + //$this->atleastoneratenotnull++; + + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + + $tvacompl = ''; + if (preg_match('/\*/', $tvakey)) { + $tvakey = str_replace('*', '', $tvakey); + $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; + } + $totalvat = $outputlangs->transcountrynoentities("TotalLT1", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalLT1", $mysoc->country_code) : ''); + $totalvat .= ' '; + + $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + //Local tax 2 after VAT + //if (!empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on') + //{ + foreach ($this->localtax2 as $localtax_type => $localtax_rate) { + if (in_array((string) $localtax_type, array('2', '4', '6'))) { + continue; + } + + foreach ($localtax_rate as $tvakey => $tvaval) { + // retrieve global local tax + if ($tvakey != 0) { // On affiche pas taux 0 + //$this->atleastoneratenotnull++; + + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + + $tvacompl = ''; + if (preg_match('/\*/', $tvakey)) { + $tvakey = str_replace('*', '', $tvakey); + $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; + } + $totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalLT2", $mysoc->country_code) : ''); + $totalvat .= ' '; + + $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1); + } + } + } + //} + + // Total TTC + $index++; + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->SetTextColor(0, 0, 60); + $pdf->SetFillColor(224, 224, 224); + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalTTC") : ''), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($total_ttc, 0, $outputlangs), $useborder, 'R', 1); + } + } + + $pdf->SetTextColor(0, 0, 0); + + $resteapayer = 0; + /* + $resteapayer = $object->total_ttc - $deja_regle; + if (!empty($object->paye)) $resteapayer=0; + */ + + if ($deja_regle > 0) { + // Already paid + Deposits + $index++; + + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("AlreadyPaid").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("AlreadyPaid") : ''), 0, 'L', 0); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle, 0, $outputlangs), 0, 'R', 0); + + /* + if ($object->close_code == 'discount_vat') + { + $index++; + $pdf->SetFillColor(255,255,255); + + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("EscompteOfferedShort"), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc - $deja_regle, 0, $outputlangs), $useborder, 'R', 1); + + $resteapayer=0; + } + */ + + $index++; + $pdf->SetTextColor(0, 0, 60); + $pdf->SetFillColor(224, 224, 224); + $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("RemainderToPay").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("RemainderToPay") : ''), $useborder, 'L', 1); + + $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($resteapayer, 0, $outputlangs), $useborder, 'R', 1); + + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->SetTextColor(0, 0, 0); + } + + $index++; + return ($tab2_top + ($tab2_hl * $index)); + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Show table for lines + * + * @param TCPDF $pdf Object PDF + * @param string $tab_top Top position of table + * @param string $tab_height Height of table (rectangle) + * @param int $nexY Y (not used) + * @param Translate $outputlangs Langs object + * @param int $hidetop 1=Hide top bar of array and title, 0=Hide nothing, -1=Hide only title + * @param int $hidebottom Hide bottom bar of array + * @param string $currency Currency code + * @param Translate $outputlangsbis Langs object bis + * @return void + */ + protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0, $currency = '', $outputlangsbis = null) + { + global $conf; + + // Force to disable hidetop and hidebottom + $hidebottom = 0; + if ($hidetop) { + $hidetop = -1; + } + + $currency = !empty($currency) ? $currency : $conf->currency; + $default_font_size = pdf_getPDFFontSize($outputlangs); + + // Amount in (at tab_top - 1) + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont('', '', $default_font_size - 2); + + if (empty($hidetop)) { + $titre = $outputlangs->transnoentities("AmountInCurrency", $outputlangs->transnoentitiesnoconv("Currency".$currency)); + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { + $titre .= ' - '.$outputlangsbis->transnoentities("AmountInCurrency", $outputlangsbis->transnoentitiesnoconv("Currency".$currency)); + } + + $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 3), $tab_top - 4); + $pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre); + + //$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR='230,230,230'; + if (!empty($conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)) { + $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_droite - $this->marge_gauche, $this->tabTitleHeight, 'F', null, explode(',', $conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)); + } + } + + $pdf->SetDrawColor(128, 128, 128); + $pdf->SetFont('', '', $default_font_size - 1); + + // Output Rect + if (empty($conf->global->MAIN_PDF_PROPAL_NOLINES)){ + $this->printRect($pdf, $this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height, $hidetop, $hidebottom); // Rect takes a length in 3rd parameter and 4th parameter + } + $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop); + + if (empty($hidetop)) { + $pdf->line($this->marge_gauche, $tab_top + $this->tabTitleHeight, $this->page_largeur - $this->marge_droite, $tab_top + $this->tabTitleHeight); // line takes a position y in 2nd parameter and 4th parameter + } + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Show top header of page. + * + * @param TCPDF $pdf Object PDF + * @param Propal $object Object to show + * @param int $showaddress 0=no, 1=yes + * @param Translate $outputlangs Object lang for output + * @param Translate $outputlangsbis Object lang for output bis + * @return void + */ + protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null) + { + global $conf, $langs; + + $ltrdirection = 'L'; + if ($outputlangs->trans("DIRECTION") == 'rtl') $ltrdirection = 'R'; + + // Load traductions files required by page + $outputlangs->loadLangs(array("main", "propal", "companies", "bills")); + + $default_font_size = pdf_getPDFFontSize($outputlangs); + + pdf_pagehead($pdf, $outputlangs, $this->page_hauteur); + + $pdf->SetTextColor(0, 0, 60); + $pdf->SetFont('', 'B', $default_font_size + 3); + + $w = 100; + + $posy = $this->marge_haute; + $posx = $this->page_largeur - $this->marge_droite - $w; + + $pdf->SetXY($this->marge_gauche, $posy); + + // Logo + if (empty($conf->global->PDF_DISABLE_MYCOMPANY_LOGO)) { + if ($this->emetteur->logo) { + $logodir = $conf->mycompany->dir_output; + if (!empty($conf->mycompany->multidir_output[$object->entity])) { + $logodir = $conf->mycompany->multidir_output[$object->entity]; + } + if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) { + $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small; + } else { + $logo = $logodir.'/logos/'.$this->emetteur->logo; + } + if (is_readable($logo)) { + $height = pdf_getHeightForLogo($logo); + $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) + } else { + $pdf->SetTextColor(200, 0, 0); + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); + } + } else { + $text = $this->emetteur->name; + $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection); + } + } + + $pdf->SetFont('', 'B', $default_font_size + 3); + $pdf->SetXY($posx, $posy); + //$pdf->SetTextColor(0, 0, 60); + $title = $outputlangs->transnoentities("PdfCommercialProposalTitle"); + $title .= ' '.$outputlangs->convToOutputCharset($object->ref); + // if ($object->statut == $object::STATUS_DRAFT) { + // $pdf->SetTextColor(128, 0, 0); + // $title .= ' - '.$outputlangs->transnoentities("NotValidated"); + // } + + $pdf->MultiCell($w, 4, $title, '', 'R'); + + $pdf->SetFont('', 'B', $default_font_size); + + /* + $posy += 5; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $textref = $outputlangs->transnoentities("Ref")." : ".$outputlangs->convToOutputCharset($object->ref); + if ($object->statut == $object::STATUS_DRAFT) { + $pdf->SetTextColor(128, 0, 0); + $textref .= ' - '.$outputlangs->transnoentities("NotValidated"); + } + $pdf->MultiCell($w, 4, $textref, '', 'R'); + */ + + $posy += 3; + $pdf->SetFont('', '', $default_font_size - 2); + + if ($object->ref_client) { + $posy += 4; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".dol_trunc($outputlangs->convToOutputCharset($object->ref_client), 65), '', 'R'); + } + + if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE)) { + $object->fetch_projet(); + if (!empty($object->project->ref)) { + $posy += 3; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->project->title), '', 'R'); + } + } + + if (!empty($conf->global->PDF_SHOW_PROJECT)) { + $object->fetch_projet(); + if (!empty($object->project->ref)) { + $outputlangs->load("projects"); + $posy += 3; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->project->ref), '', 'R'); + } + } + + if (!empty($conf->global->MAIN_PDF_DATE_TEXT)) { + $displaydate = "daytext"; + } else { + $displaydate = "day"; + } + + $posy += 4; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date, $displaydate, false, $outputlangs, true), '', 'R'); + + $posy += 4; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + + $title = $outputlangs->transnoentities("DateEndPropal"); + if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { + $title .= ' - '.$outputlangsbis->transnoentities("DateEndPropal"); + } + $pdf->MultiCell($w, 3, $title." : ".dol_print_date($object->fin_validite, $displaydate, false, $outputlangs, true), '', 'R'); + + if (empty($conf->global->MAIN_PDF_HIDE_CUSTOMER_CODE) && $object->thirdparty->code_client) { + $posy += 4; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); + } + + // Get contact + if (!empty($conf->global->DOC_SHOW_FIRST_SALES_REP)) { + $arrayidcontact = $object->getIdContact('internal', 'SALESREPFOLL'); + if (count($arrayidcontact) > 0) { + $usertmp = new User($this->db); + $usertmp->fetch($arrayidcontact[0]); + $posy += 4; + $pdf->SetXY($posx, $posy); + $pdf->SetTextColor(0, 0, 60); + $pdf->MultiCell($w, 3, $langs->transnoentities("SalesRepresentative")." : ".$usertmp->getFullName($langs), '', 'R'); + } + } + + $posy += 2; + + $top_shift = 0; + // Show list of linked objects + $current_y = $pdf->getY(); + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, $w, 3, 'R', $default_font_size); + if ($current_y < $pdf->getY()) { + $top_shift = $pdf->getY() - $current_y; + } + + if ($showaddress) { + // Sender properties + $carac_emetteur = ''; + // Add internal contact of proposal if defined + $arrayidcontact = $object->getIdContact('internal', 'SALESREPFOLL'); + if (count($arrayidcontact) > 0) { + $object->fetch_user($arrayidcontact[0]); + $labelbeforecontactname = ($outputlangs->transnoentities("FromContactName") != 'FromContactName' ? $outputlangs->transnoentities("FromContactName") : $outputlangs->transnoentities("Name")); + $carac_emetteur .= ($carac_emetteur ? "\n" : '').$labelbeforecontactname." ".$outputlangs->convToOutputCharset($object->user->getFullName($outputlangs))."\n"; + } + + $carac_emetteur .= pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'source', $object); + + // Show sender + $posy = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; + $posy += $top_shift; + $posx = $this->marge_gauche; + if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) { + $posx = $this->page_largeur - $this->marge_droite - 80; + } + + $hautcadre = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 38 : 40; + $widthrecbox = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 82; + + // Show sender frame + if (empty($conf->global->MAIN_PDF_NO_SENDER_FRAME)) { + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posx, $posy - 5); + $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("BillFrom"), 0, $ltrdirection); + $pdf->SetXY($posx, $posy); + $pdf->SetFillColor(230, 230, 230); + $pdf->MultiCell($widthrecbox, $hautcadre, "", 0, 'R', 1); + $pdf->SetTextColor(0, 0, 60); + } + + // Show sender name + if (empty($conf->global->MAIN_PDF_HIDE_SENDER_NAME)) { + $pdf->SetXY($posx + 2, $posy + 3); + $pdf->SetFont('', 'B', $default_font_size); + $pdf->MultiCell($widthrecbox - 2, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, $ltrdirection); + $posy = $pdf->getY(); + } + + // Show sender information + $pdf->SetXY($posx + 2, $posy); + $pdf->SetFont('', '', $default_font_size - 1); + //$pdf->MultiCell($widthrecbox - 2, 4, $carac_emetteur, 0, $ltrdirection); + + + // If CUSTOMER contact defined, we use it + $usecontact = false; + $arrayidcontact = $object->getIdContact('external', 'CUSTOMER'); + if (count($arrayidcontact) > 0) { + $usecontact = true; + $result = $object->fetch_contact($arrayidcontact[0]); + } + + // Recipient name + if ($usecontact && ($object->contact->socid != $object->thirdparty->id && (!isset($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) || !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT)))) { + $thirdparty = $object->contact; + } else { + $thirdparty = $object->thirdparty; + } + + $carac_client_name = pdfBuildThirdpartyName($thirdparty, $outputlangs); + + $mode = 'target'; + $carac_client = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, ($usecontact ? $object->contact : ''), $usecontact, $mode, $object); + + // Show recipient + $widthrecbox = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100; + if ($this->page_largeur < 210) { + $widthrecbox = 84; // To work with US executive format + } + $posy = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; + $posy += $top_shift; + $posx = $this->page_largeur - $this->marge_droite - $widthrecbox; + if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) { + $posx = $this->marge_gauche; + } + + // Show recipient frame + if (empty($conf->global->MAIN_PDF_NO_RECIPENT_FRAME)) { + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posx + 2, $posy - 5); + $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("BillTo"), 0, $ltrdirection); + $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); + } + + // Show recipient name + $pdf->SetXY($posx + 2, $posy + 3); + $pdf->SetFont('', 'B', $default_font_size); + $pdf->MultiCell($widthrecbox, 2, $carac_client_name, 0, $ltrdirection); + + $posy = $pdf->getY(); + + // Show recipient information + $pdf->SetFont('', '', $default_font_size - 1); + $pdf->SetXY($posx + 2, $posy); + $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, $ltrdirection); + } + + $pdf->SetTextColor(0, 0, 0); + return $top_shift; + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Show footer of page. Need this->emetteur object + * + * @param TCPDF $pdf PDF + * @param Propal $object Object to show + * @param Translate $outputlangs Object lang for output + * @param int $hidefreetext 1=Hide free text + * @return int Return height of bottom margin including footer text + */ + protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0) + { + global $conf; + if (empty($conf->global->MAIN_PDF_PROPAL_NOFOOT)){ + $showdetails = getDolGlobalInt('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', 0); + return pdf_pagefoot($pdf, $outputlangs, 'PROPOSAL_FREE_TEXT', $this->emetteur, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext, $this->page_largeur, $this->watermark); + } + } + + /** + * Show area for the customer to sign + * + * @param TCPDF $pdf Object PDF + * @param Propal $object Object proposal + * @param int $posy Position depart + * @param Translate $outputlangs Objet langs + * @return int Position pour suite + */ + protected function drawSignatureArea(&$pdf, $object, $posy, $outputlangs) + { + global $conf; + $default_font_size = pdf_getPDFFontSize($outputlangs); + $tab_top = $posy + 4; + $tab_hl = 4; + + $posx = 120; + $largcol = ($this->page_largeur - $this->marge_droite - $posx); + $useborder = 0; + $index = 0; + // Total HT + $pdf->SetFillColor(255, 255, 255); + $pdf->SetXY($posx, $tab_top + 0); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->MultiCell($largcol, $tab_hl, $outputlangs->transnoentities("ProposalCustomerSignature"), 0, 'L', 1); + + $pdf->SetXY($posx, $tab_top + $tab_hl); + $pdf->MultiCell($largcol, $tab_hl * 3, '', 1, 'R'); + if (!empty($conf->global->MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING)) { + $pdf->addEmptySignatureAppearance($posx, $tab_top + $tab_hl, $largcol, $tab_hl * 3); + } + + return ($tab_hl * 7); + } + + + /** + * Define Array Column Field + * + * @param Propal $object object proposal + * @param Translate $outputlangs langs + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @return null + */ + public function defineColumnField($object, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0) + { + global $conf, $hookmanager; + + // Default field style for content + $this->defaultContentsFieldsStyle = array( + 'align' => 'R', // R,C,L + 'padding' => array(1, 0.5, 1, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ); + + // Default field style for content + $this->defaultTitlesFieldsStyle = array( + 'align' => 'C', // R,C,L + 'padding' => array(0.5, 0, 0.5, 0), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ); + + /* + * For exemple + $this->cols['theColKey'] = array( + 'rank' => $rank, // int : use for ordering columns + 'width' => 20, // the column width in mm + 'title' => array( + 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label + 'label' => ' ', // the final label : used fore final generated text + 'align' => 'L', // text alignement : R,C,L + 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + 'content' => array( + 'align' => 'L', // text alignement : R,C,L + 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + ); + */ + + $rank = 0; // do not use negative rank + $this->cols['desc'] = array( + 'rank' => $rank, + 'width' => false, // only for desc + 'status' => true, + 'title' => array( + 'textkey' => 'Designation', // use lang key is usefull in somme case with module + 'align' => 'L', + // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label + // 'label' => ' ', // the final label + 'padding' => array(0.5, 0.5, 0.5, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + 'content' => array( + 'align' => 'L', + 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + ); + + // Image of product + $rank = $rank + 10; + $this->cols['photo'] = array( + 'rank' => $rank, + 'width' => (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH) ? 20 : $conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH), // in mm + 'status' => false, + 'title' => array( + 'textkey' => 'Photo', + 'label' => ' ' + ), + 'content' => array( + 'padding' => array(0, 0, 0, 0), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + 'border-left' => false, // remove left line separator + ); + + if (!empty($conf->global->MAIN_GENERATE_PROPOSALS_WITH_PICTURE) && !empty($this->atleastonephoto)) { + $this->cols['photo']['status'] = true; + $this->cols['photo']['border-left'] = true; + } + + + $rank = $rank + 10; + $this->cols['vat'] = array( + 'rank' => $rank, + 'status' => false, + 'width' => 16, // in mm + 'title' => array( + 'textkey' => 'VAT' + ), + 'border-left' => true, // add left line separator + ); + + if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT) && empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN)) { + $this->cols['vat']['status'] = true; + } + + $rank = $rank + 10; + $this->cols['subprice'] = array( + 'rank' => $rank, + 'width' => 19, // in mm + 'status' => true, + 'title' => array( + 'textkey' => 'PriceUHT' + ), + 'border-left' => true, // add left line separator + ); + + // Adapt dynamically the width of subprice, if text is too long. + $tmpwidth = 0; + $nblines = count($object->lines); + for ($i = 0; $i < $nblines; $i++) { + $tmpwidth2 = dol_strlen(dol_string_nohtmltag(pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails))); + $tmpwidth = max($tmpwidth, $tmpwidth2); + } + if ($tmpwidth > 10) { + $this->cols['subprice']['width'] += (2 * ($tmpwidth - 10)); + } + + $rank = $rank + 10; + $this->cols['qty'] = array( + 'rank' => $rank, + 'width' => 16, // in mm + 'status' => true, + 'title' => array( + 'textkey' => 'Qty' + ), + 'border-left' => true, // add left line separator + ); + + $rank = $rank + 10; + $this->cols['unit'] = array( + 'rank' => $rank, + 'width' => 11, // in mm + 'status' => false, + 'title' => array( + 'textkey' => 'Unit' + ), + 'border-left' => true, // add left line separator + ); + if (!empty($conf->global->PRODUCT_USE_UNITS)) { + $this->cols['unit']['status'] = true; + } + + $rank = $rank + 10; + $this->cols['discount'] = array( + 'rank' => $rank, + 'width' => 13, // in mm + 'status' => false, + 'title' => array( + 'textkey' => 'ReductionShort' + ), + 'border-left' => true, // add left line separator + ); + if ($this->atleastonediscount) { + $this->cols['discount']['status'] = true; + } + + $rank = $rank + 1000; // add a big offset to be sure is the last col because default extrafield rank is 100 + $this->cols['totalexcltax'] = array( + 'rank' => $rank, + 'width' => 26, // in mm + 'status' => empty($conf->global->PDF_PROPAL_HIDE_PRICE_EXCL_TAX) ? true : false, + 'title' => array( + 'textkey' => 'TotalHT' + ), + 'border-left' => true, // add left line separator + ); + + $rank = $rank + 1010; // add a big offset to be sure is the last col because default extrafield rank is 100 + $this->cols['totalincltax'] = array( + 'rank' => $rank, + 'width' => 26, // in mm + 'status' => empty($conf->global->PDF_PROPAL_SHOW_PRICE_INCL_TAX) ? false : true, + 'title' => array( + 'textkey' => 'TotalTTC' + ), + 'border-left' => true, // add left line separator + ); + + // Add extrafields cols + if (!empty($object->lines)) { + $line = reset($object->lines); + $this->defineColumnExtrafield($line, $outputlangs, $hidedetails); + } + + $parameters = array( + 'object' => $object, + 'outputlangs' => $outputlangs, + 'hidedetails' => $hidedetails, + 'hidedesc' => $hidedesc, + 'hideref' => $hideref + ); + + $reshook = $hookmanager->executeHooks('defineColumnField', $parameters, $this); // Note that $object may have been modified by hook + if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + } elseif (empty($reshook)) { + $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys + } else { + $this->cols = $hookmanager->resArray; + } + } +} diff --git a/htdocs/custom/emailtracker/class/emails.class.php b/htdocs/custom/emailtracker/class/emails.class.php index 5e517bcc..f9a6c386 100644 --- a/htdocs/custom/emailtracker/class/emails.class.php +++ b/htdocs/custom/emailtracker/class/emails.class.php @@ -956,9 +956,9 @@ class Emails extends CommonObject foreach ($filter as $key => $value) { if ($key == 't.rowid') { $sqlwhere[] = $key . '=' . $value; - } elseif (in_array($this->fields[$key]['type'], ['date', 'datetime', 'timestamp'])) { + } elseif (isset($this->fields[$key]['type']) && in_array($this->fields[$key]['type'], ['date', 'datetime', 'timestamp'])) { $sqlwhere[] = $key . ' = \'' . $this->db->idate($value) . '\''; - } elseif ($key == 'customsql') { + } elseif (isset($key) && $key == 'customsql') { $sqlwhere[] = $value; } elseif (strpos($value, '%') === false) { $sqlwhere[] = $key . ' IN (' . $this->db->sanitize($this->db->escape($value)) . ')'; diff --git a/htdocs/custom/emailtracker/core/modules/modEmailTracker.class.php b/htdocs/custom/emailtracker/core/modules/modEmailTracker.class.php index f3d1d890..4981537a 100644 --- a/htdocs/custom/emailtracker/core/modules/modEmailTracker.class.php +++ b/htdocs/custom/emailtracker/core/modules/modEmailTracker.class.php @@ -216,6 +216,7 @@ class modEmailTracker extends DolibarrModules } // Array to add new pages in new tabs + $this->tabs = []; $this->tabs[] = ['data' => 'propal:+emailtracker:EmailTracker:emailtracker@emailtracker:$user->rights->emailtracker->emails->read:/emailtracker/tab_propal.php?id=__ID__']; $this->tabs[] = ['data' => 'order:+emailtracker:EmailTracker:emailtracker@emailtracker:$user->rights->emailtracker->emails->read:/emailtracker/tab_order.php?id=__ID__']; @@ -224,6 +225,7 @@ class modEmailTracker extends DolibarrModules $this->tabs[] = ['data' => 'supplier_proposal:+emailtracker:EmailTracker:emailtracker@emailtracker:$user->rights->emailtracker->emails->read:/emailtracker/tab_supplier_proposal.php?id=__ID__']; $this->tabs[] = ['data' => 'supplier_order:+emailtracker:EmailTracker:emailtracker@emailtracker:$user->rights->emailtracker->emails->read:/emailtracker/tab_order_supplier.php?id=__ID__']; $this->tabs[] = ['data' => 'supplier_invoice:+emailtracker:EmailTracker:emailtracker@emailtracker:$user->rights->emailtracker->emails->read:/emailtracker/tab_invoice_supplier.php?id=__ID__']; + // Example: // $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@emailtracker:$user->rights->emailtracker->read:/emailtracker/mynewtab1.php?id=__ID__'); // To add a new tab identified by code tabname1 // $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@emailtracker:$user->rights->othermodule->read:/emailtracker/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key. diff --git a/htdocs/custom/emailtracker/tab_invoice_supplier.php b/htdocs/custom/emailtracker/tab_invoice_supplier.php index a952f52b..f73517ab 100644 --- a/htdocs/custom/emailtracker/tab_invoice_supplier.php +++ b/htdocs/custom/emailtracker/tab_invoice_supplier.php @@ -109,7 +109,7 @@ if ($object->id > 0) { $head = facturefourn_prepare_head($object); $titre = $langs->trans('SupplierInvoice'); - print dol_get_fiche_head($head, 'emailtracker', $titre, -1, 'supplier_invoice'); + //print dol_get_fiche_head($head, 'emailtracker', $titre, -1, 'supplier_invoice'); // Supplier invoice card $linkback = '' . $langs->trans('BackToList') . ''; @@ -160,9 +160,9 @@ if ($object->id > 0) { $object->totalpaye = $alreadypaid; // To give a chance to dol_banner_tab to use already paid amount to show correct status dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - + print dol_get_fiche_head($head, 'emailtracker', $titre, -1, 'supplier_invoice'); print dol_get_fiche_end(); - + print '
    '; // You can use div-table-responsive-no-min if you dont need reserved height for your table print '' . "\n"; ?> diff --git a/htdocs/debugbar/class/DataCollector/DolConfigCollector.php b/htdocs/debugbar/class/DataCollector/DolConfigCollector.php deleted file mode 100644 index 715d20ab..00000000 --- a/htdocs/debugbar/class/DataCollector/DolConfigCollector.php +++ /dev/null @@ -1,89 +0,0 @@ -transnoentities('Config') => array( - "icon" => "gear", - "widget" => "PhpDebugBar.Widgets.VariableListWidget", - "map" => $this->getName(), - "default" => "{}" - ) - ); - } - - /** - * Return collected data - * - * @return array Array - */ - public function collect() - { - $this->data = $this->getConfig(); - - return parent::collect(); - } - - /** - * Returns an array with config data - * - * @return array Array of config - */ - protected function getConfig() - { - global $conf, $user; - - // Get constants - $const = get_defined_constants(true); - - $config = array( - 'Dolibarr' => array( - 'const' => $const['user'], - '$conf' => $this->objectToArray($conf), - '$user' => $this->objectToArray($user) - ), - 'PHP' => array( - 'version' => PHP_VERSION, - 'interface' => PHP_SAPI, - 'os' => PHP_OS - ) - ); - - return $config; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Convert an object to array - * - * @param mixed $obj Object - * @return array Array - */ - protected function objectToArray($obj) - { - // phpcs:enable - $arr = array(); - $_arr = is_object($obj) ? get_object_vars($obj) : $obj; - foreach ($_arr as $key => $val) { - $val = (is_array($val) || is_object($val)) ? $this->objectToArray($val) : $val; - $arr[$key] = $val; - } - - return $arr; - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolExceptionsCollector.php b/htdocs/debugbar/class/DataCollector/DolExceptionsCollector.php deleted file mode 100644 index 15d433fd..00000000 --- a/htdocs/debugbar/class/DataCollector/DolExceptionsCollector.php +++ /dev/null @@ -1,35 +0,0 @@ -transnoentities('Exceptions'); - - return array( - "$title" => array( - 'icon' => 'bug', - 'widget' => 'PhpDebugBar.Widgets.ExceptionsWidget', - 'map' => 'exceptions.exceptions', - 'default' => '[]' - ), - "$title:badge" => array( - 'map' => 'exceptions.count', - 'default' => 'null' - ) - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolLogsCollector.php b/htdocs/debugbar/class/DataCollector/DolLogsCollector.php deleted file mode 100644 index 893804ae..00000000 --- a/htdocs/debugbar/class/DataCollector/DolLogsCollector.php +++ /dev/null @@ -1,212 +0,0 @@ -nboflines = 0; - $this->maxnboflines = getDolGlobalInt('DEBUGBAR_LOGS_LINES_NUMBER', 250); // High number slows seriously output - - $this->path = $path ?: $this->getLogsFile(); - } - - /** - * Return widget settings - * - * @return array Array - */ - public function getWidgets() - { - global $langs; - - $title = $langs->transnoentities('Logs'); - $name = $this->getName(); - - return array( - "$title" => array( - "icon" => "list-alt", - "widget" => "PhpDebugBar.Widgets.MessagesWidget", - "map" => "$name.messages", - "default" => "[]" - ), - "$title:badge" => array( - "map" => "$name.count", - "default" => "null" - ) - ); - } - - /** - * Return collected data - * - * @return array Array - */ - public function collect() - { - global $conf; - - $uselogfile = getDolGlobalInt('DEBUGBAR_USE_LOG_FILE'); - - if ($uselogfile) { - $this->getStorageLogs($this->path); - } else { - $log_levels = $this->getLevels(); - - foreach ($conf->logbuffer as $line) { - if ($this->nboflines >= $this->maxnboflines) { - break; - } - foreach ($log_levels as $level_key => $level) { - if (strpos(strtolower($line), strtolower($level_key)) == 20) { - $this->nboflines++; - $this->addMessage($line, $level, false); - } - } - } - } - - return parent::collect(); - } - - /** - * Get the path to the logs file - * - * @return string - */ - public function getLogsFile() - { - // default dolibarr log file - $path = DOL_DATA_ROOT.'/dolibarr.log'; - return $path; - } - - /** - * Get logs - * - * @param string $path Path - * @return array - */ - public function getStorageLogs($path) - { - if (!file_exists($path)) { - return; - } - - // Load the latest lines - $file = implode("", $this->tailFile($path, $this->maxnboflines)); - - foreach ($this->getLogs($file) as $log) { - $this->addMessage($log['line'], $log['level'], false); - } - } - - /** - * Get latest file lines - * - * @param string $file File - * @param int $lines Lines - * @return array Array - */ - protected function tailFile($file, $lines) - { - $handle = fopen($file, "r"); - $linecounter = $lines; - $pos = -2; - $beginning = false; - $text = array(); - while ($linecounter > 0) { - $t = " "; - while ($t != "\n") { - if (fseek($handle, $pos, SEEK_END) == -1) { - $beginning = true; - break; - } - $t = fgetc($handle); - $pos--; - } - $linecounter--; - if ($beginning) { - rewind($handle); - } - $text[$lines - $linecounter - 1] = fgets($handle); - if ($beginning) { - break; - } - } - fclose($handle); - return array_reverse($text); - } - - /** - * Search a string for log entries - * - * @param string $file File - * @return array Lines of logs - */ - public function getLogs($file) - { - $pattern = "/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.*/"; - $log_levels = $this->getLevels(); - preg_match_all($pattern, $file, $matches); - $log = array(); - foreach ($matches as $lines) { - foreach ($lines as $line) { - foreach ($log_levels as $level_key => $level) { - if (strpos(strtolower($line), strtolower($level_key)) == 20) { - $log[] = array('level' => $level, 'line' => $line); - } - } - } - } - $log = array_reverse($log); - return $log; - } - - /** - * Get the log levels from psr/log. - * - * @return array Array of log level - */ - public function getLevels() - { - $class = new ReflectionClass(new LogLevel()); - $levels = $class->getConstants(); - $levels['ERR'] = 'error'; - $levels['WARN'] = 'warning'; - - return $levels; - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolMemoryCollector.php b/htdocs/debugbar/class/DataCollector/DolMemoryCollector.php deleted file mode 100644 index b52ac8ff..00000000 --- a/htdocs/debugbar/class/DataCollector/DolMemoryCollector.php +++ /dev/null @@ -1,48 +0,0 @@ -updatePeakUsage(); - return array( - 'peak_usage' => $this->peakUsage, - //'peak_usage_str' => $this->getDataFormatter()->formatBytes($this->peakUsage, 2) - 'peak_usage_str' => (empty($conf->dol_optimize_smallscreen) ? dol_print_size($this->peakUsage, 0) : dol_print_size($this->peakUsage, 1)) - ); - } - - /** - * Return widget settings - * - * @return void - */ - public function getWidgets() - { - global $langs; - - $langs->load("other"); - - return array( - "memory" => array( - "icon" => "cogs", - "tooltip" => $langs->transnoentities('MemoryUsage'), - "map" => "memory.peak_usage_str", - "default" => "'0B'" - ) - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolMessagesCollector.php b/htdocs/debugbar/class/DataCollector/DolMessagesCollector.php deleted file mode 100644 index 1fcf60c8..00000000 --- a/htdocs/debugbar/class/DataCollector/DolMessagesCollector.php +++ /dev/null @@ -1,36 +0,0 @@ -transnoentities('Messages'); - $name = $this->getName(); - - return array( - "$title" => array( - "icon" => "list-alt", - "widget" => "PhpDebugBar.Widgets.MessagesWidget", - "map" => "$name.messages", - "default" => "[]" - ), - "$title:badge" => array( - "map" => "$name.count", - "default" => "null" - ) - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolPhpCollector.php b/htdocs/debugbar/class/DataCollector/DolPhpCollector.php deleted file mode 100644 index 3d6536bd..00000000 --- a/htdocs/debugbar/class/DataCollector/DolPhpCollector.php +++ /dev/null @@ -1,168 +0,0 @@ -name = $name; - set_error_handler([$this, 'errorHandler'], E_ALL); - } - - /** - * Called by the DebugBar when data needs to be collected. - * - * @return array Collected data. - */ - public function collect() - { - $messages = $this->getMessages(); - return [ - 'count' => count($messages), - 'messages' => $messages, - ]; - } - - /** - * Returns a list of messages ordered by their timestamp. - * - * @return array A list of messages ordered by time. - */ - public function getMessages() - { - $messages = $this->messages; - - usort($messages, function ($itemA, $itemB) { - if ($itemA['time'] === $itemB['time']) { - return 0; - } - return $itemA['time'] < $itemB['time'] ? -1 : 1; - }); - - return $messages; - } - - /** - * Returns a hash where keys are control names and their values an array of options as defined in - * {@see DebugBar\JavascriptRenderer::addControl()} - * - * @return array Needed details to render the widget. - */ - public function getWidgets() - { - $name = $this->getName(); - return [ - $name => [ - 'icon' => 'list', - 'widget' => 'PhpDebugBar.Widgets.MessagesWidget', - 'map' => "$name.messages", - 'default' => '[]', - ], - "$name:badge" => [ - 'map' => "$name.count", - 'default' => 'null', - ], - ]; - } - - /** - * Returns the unique name of the collector. - * - * @return string The widget name. - */ - public function getName() - { - return $this->name; - } - - /** - * Exception error handler. Called from constructor with set_error_handler to add all details. - * - * @param int $severity Error type. - * @param string $message Message of error. - * @param string $fileName File where error is generated. - * @param int $line Line number where error is generated. - * - * @return void - */ - public function errorHandler($severity, $message, $fileName, $line) - { - for ($i = 0; $i < 15; $i++) { - if ($type = $severity & (2 ** $i)) { - $label = $this->friendlyErrorType($type); - $this->messages[] = [ - 'message' => $message . ' (' . $fileName . ':' . $line . ')', - 'message_html' => null, - 'is_string' => true, - 'label' => $label, - 'time' => microtime(true), - ]; - } - } - } - - /** - * Return error name from error code. - * - * @info http://php.net/manual/es/errorfunc.constants.php - * - * @param int $type Error code. - * - * @return string Error name. - */ - private function friendlyErrorType($type) - { - $errors = [ - E_ERROR => 'ERROR', - E_WARNING => 'WARNING', - E_PARSE => 'PARSE', - E_NOTICE => 'NOTICE', - E_CORE_ERROR => 'CORE_ERROR', - E_CORE_WARNING => 'CORE_WARNING', - E_COMPILE_ERROR => 'COMPILE_ERROR', - E_COMPILE_WARNING => 'COMPILE_WARNING', - E_USER_ERROR => 'USER_ERROR', - E_USER_WARNING => 'USER_WARNING', - E_USER_NOTICE => 'USER_NOTICE', - E_STRICT => 'STRICT', - E_RECOVERABLE_ERROR => 'RECOVERABLE_ERROR', - E_DEPRECATED => 'DEPRECATED', - E_USER_DEPRECATED => 'USER_DEPRECATED', - ]; - - $result = ''; - if (isset($errors[$type])) { - $result = $errors[$type]; - } - - return $result; - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolQueryCollector.php b/htdocs/debugbar/class/DataCollector/DolQueryCollector.php deleted file mode 100644 index ca5aa284..00000000 --- a/htdocs/debugbar/class/DataCollector/DolQueryCollector.php +++ /dev/null @@ -1,117 +0,0 @@ -db = $db; - } - - /** - * Return collected data - * - * @return array Array - */ - public function collect() - { - $queries = array(); - $totalExecTime = 0; - $totalMemoryUsage = 0; - $totalFailed = 0; - foreach ($this->db->queries as $query) { - $queries[] = array( - 'sql' => $query['sql'], - 'duration' => $query['duration'], - 'duration_str' => round($query['duration'] * 1000, 2), - 'memory' => $query['memory_usage'], - 'is_success' => $query['is_success'], - 'error_code' => $query['error_code'], - 'error_message' => $query['error_message'] - ); - $totalExecTime += $query['duration']; - $totalMemoryUsage += $query['memory_usage']; - if (!$query['is_success']) { - $totalFailed += 1; - } - } - - return array( - 'nb_statements' => count($queries), - 'nb_failed_statements' => $totalFailed, - 'accumulated_duration' => $totalExecTime, - 'memory_usage' => $totalMemoryUsage, - 'statements' => $queries - ); - } - - /** - * Return collector name - * - * @return string Name - */ - public function getName() - { - return 'query'; - } - - /** - * Return widget settings - * - * @return array Array - */ - public function getWidgets() - { - global $langs; - - $title = $langs->transnoentities('Database'); - - return array( - "$title" => array( - "icon" => "arrow-right", - "widget" => "PhpDebugBar.Widgets.SQLQueriesWidget", - "map" => "query", - "default" => "[]" - ), - "$title:badge" => array( - "map" => "query.nb_statements", - "default" => 0 - ) - ); - } - - /** - * Return assets - * - * @return array Array - */ - public function getAssets() - { - return array( - 'css' => 'widgets/sqlqueries/widget.css', - 'js' => 'widgets/sqlqueries/widget.js' - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolRequestDataCollector.php b/htdocs/debugbar/class/DataCollector/DolRequestDataCollector.php deleted file mode 100644 index 93864380..00000000 --- a/htdocs/debugbar/class/DataCollector/DolRequestDataCollector.php +++ /dev/null @@ -1,61 +0,0 @@ - $val) { - if (preg_match('/^DOLSESSID_/', $key)) { - $arrayofvalues[$key] = '*****hidden*****'; - } - } - //var_dump($arrayofvalues); - } - - $data["$".$var] = $this->getDataFormatter()->formatVar($arrayofvalues); - } - } - - return $data; - } - - /** - * Return widget settings - * - * @return void - */ - public function getWidgets() - { - global $langs; - - $langs->load("other"); - - return array( - $langs->transnoentities('Variables') => array( - "icon" => "tags", - "widget" => "PhpDebugBar.Widgets.VariableListWidget", - "map" => "request", - "default" => "{}" - ) - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolTimeDataCollector.php b/htdocs/debugbar/class/DataCollector/DolTimeDataCollector.php deleted file mode 100644 index ed5e979d..00000000 --- a/htdocs/debugbar/class/DataCollector/DolTimeDataCollector.php +++ /dev/null @@ -1,34 +0,0 @@ - array( - "icon" => "clock-o", - "tooltip" => $langs->transnoentities('RequestDuration'), - "map" => "time.duration_str", - "default" => "'0ms'" - ), - $langs->transnoentities('Timeline') => array( - "icon" => "tasks", - "widget" => "PhpDebugBar.Widgets.TimelineWidget", - "map" => "time", - "default" => "{}" - ) - ); - } -} diff --git a/htdocs/debugbar/class/DataCollector/DolibarrCollector.php b/htdocs/debugbar/class/DataCollector/DolibarrCollector.php deleted file mode 100644 index 3193fe26..00000000 --- a/htdocs/debugbar/class/DataCollector/DolibarrCollector.php +++ /dev/null @@ -1,156 +0,0 @@ -trans('Host').': '.$conf->db->host.'
    '; - $info .= $langs->trans('Port').': '.$conf->db->port.'
    '; - $info .= $langs->trans('Name').': '.$conf->db->name.'
    '; - $info .= $langs->trans('User').': '.$conf->db->user.'
    '; - $info .= $langs->trans('Type').': '.$conf->db->type.'
    '; - $info .= $langs->trans('Prefix').': '.$conf->db->prefix.'
    '; - $info .= $langs->trans('Charset').': '.$conf->db->character_set.''; - - return $info; - } - - /** - * Return dolibarr info as an HTML string - * - * @return string HTML string - */ - protected function getDolibarrInfo() - { - global $conf, $langs; - global $dolibarr_main_prod, $dolibarr_nocsrfcheck; - - $info = $langs->trans('Version').': '.DOL_VERSION.'
    '; - $info .= $langs->trans('Theme').': '.$conf->theme.'
    '; - $info .= $langs->trans('Locale').': '.$conf->global->MAIN_LANG_DEFAULT.'
    '; - $info .= $langs->trans('Currency').': '.$conf->currency.'
    '; - $info .= $langs->trans('Entity').': '.$conf->entity.'
    '; - $info .= $langs->trans('MaxSizeList').': '.($conf->liste_limit ?: $conf->global->MAIN_SIZE_LISTE_LIMIT).'
    '; - $info .= $langs->trans('MaxSizeForUploadedFiles').': '.$conf->global->MAIN_UPLOAD_DOC.'
    '; - $info .= '$dolibarr_main_prod = '.$dolibarr_main_prod.'
    '; - $info .= '$dolibarr_nocsrfcheck = '.$dolibarr_nocsrfcheck.'
    '; - $info .= 'MAIN_SECURITY_CSRF_WITH_TOKEN = '.$conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN.'
    '; - $info .= 'MAIN_FEATURES_LEVEL = '.$conf->global->MAIN_FEATURES_LEVEL.'
    '; - - return $info; - } - - /** - * Return mail info as an HTML string - * - * @return string HTML string - */ - protected function getMailInfo() - { - global $conf, $langs; - global $dolibarr_mailing_limit_sendbyweb, $dolibarr_mailing_limit_sendbycli, $dolibarr_mailing_limit_sendbyday; - - $info = $langs->trans('Method').': '.getDolGlobalString("MAIN_MAIL_SENDMODE").'
    '; - $info .= $langs->trans('Server').': '.getDolGlobalString("MAIN_MAIL_SMTP_SERVER").'
    '; - $info .= $langs->trans('Port').': '.getDolGlobalString("MAIN_MAIL_SMTP_PORT").'
    '; - $info .= $langs->trans('ID').': '.getDolGlobalString("MAIN_MAIL_SMTPS_IDT").'
    '; - $info .= $langs->trans('Pwd').': '.preg_replace('/./', '*', getDolGlobalString("MAIN_MAIL_SMTPS_PW")).'
    '; - $info .= $langs->trans('TLS/STARTTLS').': '.getDolGlobalString("MAIN_MAIL_EMAIL_TLS").' / '.getDolGlobalString("MAIN_MAIL_EMAIL_STARTTLS").'
    '; - $info .= $langs->trans('MAIN_DISABLE_ALL_MAILS').': '.(empty($conf->global->MAIN_DISABLE_ALL_MAILS) ? $langs->trans('No') : $langs->trans('Yes')).'
    '; - $info .= 'dolibarr_mailing_limit_sendbyweb = '.$dolibarr_mailing_limit_sendbyweb.'
    '; - $info .= 'dolibarr_mailing_limit_sendbycli = '.$dolibarr_mailing_limit_sendbycli.'
    '; - $info .= 'dolibarr_mailing_limit_sendbyday = '.$dolibarr_mailing_limit_sendbyday.'
    '; - - return $info; - } - - /** - * Return widget settings - * - * @return array Array - */ - public function getWidgets() - { - return array( - "database_info" => array( - "icon" => "database", - "indicator" => "PhpDebugBar.DebugBar.TooltipIndicator", - "tooltip" => array( - "html" => $this->getDatabaseInfo(), - "class" => "tooltip-wide" - ), - "map" => "", - "default" => "" - ), - "dolibarr_info" => array( - "icon" => "desktop", - "indicator" => "PhpDebugBar.DebugBar.TooltipIndicator", - "tooltip" => array( - "html" => $this->getDolibarrInfo(), - "class" => "tooltip-wide" - ), - "map" => "", - "default" => "" - ), - "mail_info" => array( - "icon" => "envelope", - "indicator" => "PhpDebugBar.DebugBar.TooltipIndicator", - "tooltip" => array( - "html" => $this->getMailInfo(), - "class" => "tooltip-extra-wide" - ), - "map" => "", - "default" => "" - ) - ); - } - - /** - * Return collector assests - * - * @return array Array - */ - public function getAssets() - { - return array( - 'base_url' => dol_buildpath('/debugbar', 1), - 'js' => 'js/widgets.js' - ); - } -} diff --git a/htdocs/debugbar/class/DebugBar.php b/htdocs/debugbar/class/DebugBar.php deleted file mode 100644 index bf797e63..00000000 --- a/htdocs/debugbar/class/DebugBar.php +++ /dev/null @@ -1,64 +0,0 @@ -addCollector(new PhpInfoCollector()); - //$this->addCollector(new DolMessagesCollector()); - $this->addCollector(new DolRequestDataCollector()); - //$this->addCollector(new DolConfigCollector()); // Disabled for security purpose - $this->addCollector(new DolTimeDataCollector()); - $this->addCollector(new PhpCollector()); - $this->addCollector(new DolMemoryCollector()); - //$this->addCollector(new DolExceptionsCollector()); - $this->addCollector(new DolQueryCollector()); - $this->addCollector(new DolibarrCollector()); - if (isModEnabled('syslog')) { - $this->addCollector(new DolLogsCollector()); - } - } - - /** - * Returns a JavascriptRenderer for this instance - * - * @return string String content - */ - public function getRenderer() - { - $renderer = parent::getJavascriptRenderer(DOL_URL_ROOT.'/includes/maximebf/debugbar/src/DebugBar/Resources'); - $renderer->disableVendor('jquery'); // We already have jquery loaded globally by the main.inc.php - $renderer->disableVendor('fontawesome'); // We already have fontawesome loaded globally by the main.inc.php - $renderer->disableVendor('highlightjs'); // We don't need this - $renderer->setEnableJqueryNoConflict(false); // We don't need no conflict - return $renderer; - } -} diff --git a/htdocs/debugbar/class/TraceableDB.php b/htdocs/debugbar/class/TraceableDB.php deleted file mode 100644 index 5863f1d9..00000000 --- a/htdocs/debugbar/class/TraceableDB.php +++ /dev/null @@ -1,723 +0,0 @@ -db::LABEL (but this is a constant? o_O) - /** - * @const Version min database - */ - const VERSIONMIN = ''; // TODO: the same thing here, $this->db::VERSIONMIN is the right value - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - $this->type = $this->db->type; - $this->queries = array(); - } - - /** - * Format a SQL IF - * - * @param string $test Test string (example: 'cd.statut=0', 'field IS NULL') - * @param string $resok resultat si test egal - * @param string $resko resultat si test non egal - * @return string SQL string - */ - public function ifsql($test, $resok, $resko) - { - return $this->db->ifsql($test, $resok, $resko); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return datas as an array - * - * @param resource $resultset Resultset of request - * @return array Array - */ - public function fetch_row($resultset) - { - // phpcs:enable - return $this->db->fetch_row($resultset); - } - - /** - * Convert (by PHP) a GM Timestamp date into a string date with PHP server TZ to insert into a date field. - * Function to use to build INSERT, UPDATE or WHERE predica - * - * @param int $param Date TMS to convert - * @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ - * @return string Date in a string YYYY-MM-DD HH:MM:SS - */ - public function idate($param, $gm = 'tzserver') - { - return $this->db->idate($param, $gm); - } - - /** - * Return last error code - * - * @return string lasterrno - */ - public function lasterrno() - { - return $this->db->lasterrno(); - } - - /** - * Start transaction - * - * @param string $textinlog Add a small text into log. '' by default. - * @return int 1 if transaction successfuly opened or already opened, 0 if error - */ - public function begin($textinlog = '') - { - return $this->db->begin($textinlog); - } - - /** - * Create a new database - * Do not use function xxx_create_db (xxx=mysql, ...) as they are deprecated - * We force to create database with charset this->forcecharset and collate this->forcecollate - * - * @param string $database Database name to create - * @param string $charset Charset used to store data - * @param string $collation Charset used to sort data - * @param string $owner Username of database owner - * @return resource resource defined if OK, null if KO - */ - public function DDLCreateDb($database, $charset = '', $collation = '', $owner = '') - { - return $this->db->DDLCreateDb($database, $charset, $collation, $owner); - } - - /** - * Return version of database server into an array - * - * @return array Version array - */ - public function getVersionArray() - { - return $this->db->getVersionArray(); - } - - /** - * Convert a SQL request in Mysql syntax to native syntax - * - * @param string $line SQL request line to convert - * @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...) - * @return string SQL request line converted - */ - public static function convertSQLFromMysql($line, $type = 'ddl') - { - return self::$db->convertSQLFromMysql($line); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return the number o flines into the result of a request INSERT, DELETE or UPDATE - * - * @param resource $resultset Curseur de la requete voulue - * @return int Number of lines - * @see num_rows() - */ - public function affected_rows($resultset) - { - // phpcs:enable - return $this->db->affected_rows($resultset); - } - - /** - * Return description of last error - * - * @return string Error text - */ - public function error() - { - return $this->db->error(); - } - - /** - * List tables into a database - * - * @param string $database Name of database - * @param string $table Nmae of table filter ('xxx%') - * @return array List of tables in an array - */ - public function DDLListTables($database, $table = '') - { - return $this->db->DDLListTables($database, $table); - } - - /** - * Return last request executed with query() - * - * @return string Last query - */ - public function lastquery() - { - return $this->db->lastquery(); - } - - /** - * Define sort criteria of request - * - * @param string $sortfield List of sort fields - * @param string $sortorder Sort order - * @return string String to provide syntax of a sort sql string - */ - public function order($sortfield = null, $sortorder = null) - { - return $this->db->order($sortfield, $sortorder); - } - - /** - * Decrypt sensitive data in database - * - * @param string $value Value to decrypt - * @return string Decrypted value if used - */ - public function decrypt($value) - { - return $this->db->decrypt($value); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return datas as an array - * - * @param resource $resultset Resultset of request - * @return array Array - */ - public function fetch_array($resultset) - { - // phpcs:enable - return $this->db->fetch_array($resultset); - } - - /** - * Return last error label - * - * @return string lasterror - */ - public function lasterror() - { - return $this->db->lasterror(); - } - - /** - * Escape a string to insert data - * - * @param string $stringtoencode String to escape - * @return string String escaped - */ - public function escape($stringtoencode) - { - return $this->db->escape($stringtoencode); - } - - /** - * Escape a string to insert data - * - * @param string $stringtoencode String to escape - * @return string String escaped - * @deprecated - */ - public function escapeunderscore($stringtoencode) - { - return $this->db->escapeunderscore($stringtoencode); - } - - /** - * Escape a string to insert data into a like - * - * @param string $stringtoencode String to escape - * @return string String escaped - */ - public function escapeforlike($stringtoencode) - { - return str_replace(array('_', '\\', '%'), array('\_', '\\\\', '\%'), (string) $stringtoencode); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Get last ID after an insert INSERT - * - * @param string $tab Table name concerned by insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql - * @param string $fieldid Field name - * @return int Id of row - */ - public function last_insert_id($tab, $fieldid = 'rowid') - { - // phpcs:enable - return $this->db->last_insert_id($tab, $fieldid); - } - - /** - * Return full path of restore program - * - * @return string Full path of restore program - */ - public function getPathOfRestore() - { - return $this->db->getPathOfRestore(); - } - - /** - * Cancel a transaction and go back to initial data values - * - * @param string $log Add more log to default log line - * @return resource|int 1 if cancelation is ok or transaction not open, 0 if error - */ - public function rollback($log = '') - { - return $this->db->rollback($log); - } - - /** - * Execute a SQL request and return the resultset - * - * @param string $query SQL query string - * @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions). - * Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints. - * @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...) - * @param int $result_mode Result mode - * @return resource Resultset of answer - */ - public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0) - { - $this->startTracing(); - - $resql = $this->db->query($query, $usesavepoint, $type, $result_mode); - - $this->endTracing($query, $resql); - - return $resql; - } - - /** - * Start query tracing - * - * @return void - */ - protected function startTracing() - { - $this->startTime = microtime(true); - $this->startMemory = memory_get_usage(true); - } - - /** - * End query tracing - * - * @param string $sql query string - * @param string $resql query result - * @return void - */ - protected function endTracing($sql, $resql) - { - $endTime = microtime(true); - $duration = $endTime - $this->startTime; - $endMemory = memory_get_usage(true); - $memoryDelta = $endMemory - $this->startMemory; - - $this->queries[] = array( - 'sql' => $sql, - 'duration' => $duration, - 'memory_usage' => $memoryDelta, - 'is_success' => $resql ? true : false, - 'error_code' => $resql ? null : $this->db->lasterrno(), - 'error_message' => $resql ? null : $this->db->lasterror() - ); - } - - /** - * Connexion to server - * - * @param string $host database server host - * @param string $login login - * @param string $passwd password - * @param string $name name of database (not used for mysql, used for pgsql) - * @param int $port Port of database server - * @return resource Database access handler - * @see close() - */ - public function connect($host, $login, $passwd, $name, $port = 0) - { - return $this->db->connect($host, $login, $passwd, $name, $port); - } - - /** - * Define limits and offset of request - * - * @param int $limit Maximum number of lines returned (-1=conf->liste_limit, 0=no limit) - * @param int $offset Numero of line from where starting fetch - * @return string String with SQL syntax to add a limit and offset - */ - public function plimit($limit = 0, $offset = 0) - { - return $this->db->plimit($limit, $offset); - } - - /** - * Return value of server parameters - * - * @param string $filter Filter list on a particular value - * @return array Array of key-values (key=>value) - */ - public function getServerParametersValues($filter = '') - { - return $this->db->getServerParametersValues($filter); - } - - /** - * Return value of server status - * - * @param string $filter Filter list on a particular value - * @return array Array of key-values (key=>value) - */ - public function getServerStatusValues($filter = '') - { - return $this->db->getServerStatusValues($filter); - } - - /** - * Return collation used in database - * - * @return string Collation value - */ - public function getDefaultCollationDatabase() - { - return $this->db->getDefaultCollationDatabase(); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return number of lines for result of a SELECT - * - * @param resource $resultset Resulset of requests - * @return int Nb of lines - * @see affected_rows() - */ - public function num_rows($resultset) - { - // phpcs:enable - return $this->db->num_rows($resultset); - } - - /** - * Return full path of dump program - * - * @return string Full path of dump program - */ - public function getPathOfDump() - { - return $this->db->getPathOfDump(); - } - - /** - * Return version of database client driver - * - * @return string Version string - */ - public function getDriverInfo() - { - return $this->db->getDriverInfo(); - } - - /** - * Return generic error code of last operation. - * - * @return string Error code (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...) - */ - public function errno() - { - return $this->db->errno(); - } - - /** - * Create a table into database - * - * @param string $table Name of table - * @param array $fields Tableau associatif [nom champ][tableau des descriptions] - * @param string $primary_key Nom du champ qui sera la clef primaire - * @param string $type Type de la table - * @param array $unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur - * @param array $fulltext_keys Tableau des Nom de champs qui seront indexes en fulltext - * @param array $keys Tableau des champs cles noms => valeur - * @return int <0 if KO, >=0 if OK - */ - public function DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys = null, $fulltext_keys = null, $keys = null) - { - return $this->db->DDLCreateTable($table, $fields, $primary_key, $type, $unique_keys, $fulltext_keys, $keys); - } - - /** - * Drop a table into database - * - * @param string $table Name of table - * @return int <0 if KO, >=0 if OK - */ - public function DDLDropTable($table) - { - return $this->db->DDLDropTable($table); - } - - /** - * Return list of available charset that can be used to store data in database - * - * @return array List of Charset - */ - public function getListOfCharacterSet() - { - return $this->db->getListOfCharacterSet(); - } - - /** - * Create a new field into table - * - * @param string $table Name of table - * @param string $field_name Name of field to add - * @param string $field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre] - * @param string $field_position Optionnel ex.: "after champtruc" - * @return int <0 if KO, >0 if OK - */ - public function DDLAddField($table, $field_name, $field_desc, $field_position = "") - { - return $this->db->DDLAddField($table, $field_name, $field_desc, $field_position); - } - - /** - * Drop a field from table - * - * @param string $table Name of table - * @param string $field_name Name of field to drop - * @return int <0 if KO, >0 if OK - */ - public function DDLDropField($table, $field_name) - { - return $this->db->DDLDropField($table, $field_name); - } - - /** - * Update format of a field into a table - * - * @param string $table Name of table - * @param string $field_name Name of field to modify - * @param string $field_desc Array with description of field format - * @return int <0 if KO, >0 if OK - */ - public function DDLUpdateField($table, $field_name, $field_desc) - { - return $this->db->DDLUpdateField($table, $field_name, $field_desc); - } - - /** - * Return list of available collation that can be used for database - * - * @return array List of Collation - */ - public function getListOfCollation() - { - return $this->db->getListOfCollation(); - } - - /** - * Return a pointer of line with description of a table or field - * - * @param string $table Name of table - * @param string $field Optionnel : Name of field if we want description of field - * @return resource Resource - */ - public function DDLDescTable($table, $field = "") - { - return $this->db->DDLDescTable($table, $field); - } - - /** - * Return version of database server - * - * @return string Version string - */ - public function getVersion() - { - return $this->db->getVersion(); - } - - /** - * Return charset used to store data in database - * - * @return string Charset - */ - public function getDefaultCharacterSetDatabase() - { - return $this->db->getDefaultCharacterSetDatabase(); - } - - /** - * Create a user and privileges to connect to database (even if database does not exists yet) - * - * @param string $dolibarr_main_db_host Ip serveur - * @param string $dolibarr_main_db_user Nom user a creer - * @param string $dolibarr_main_db_pass Mot de passe user a creer - * @param string $dolibarr_main_db_name Database name where user must be granted - * @return int <0 if KO, >=0 if OK - */ - public function DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name) - { - return $this->db->DDLCreateUser($dolibarr_main_db_host, $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true) - * 19700101020000 -> 3600 with TZ+1 and gmt=0 - * 19700101020000 -> 7200 whaterver is TZ if gmt=1 - * - * @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS) - * @param bool $gm 1=Input informations are GMT values, otherwise local to server TZ - * @return int|string Date TMS or '' - */ - public function jdate($string, $gm = false) - { - // phpcs:enable - return $this->db->jdate($string, $gm); - } - - /** - * Encrypt sensitive data in database - * Warning: This function includes the escape and add the SQL simple quotes on strings. - * - * @param string $fieldorvalue Field name or value to encrypt - * @param int $withQuotes Return string including the SQL simple quotes. This param must always be 1 (Value 0 is bugged and deprecated). - * @return string XXX(field) or XXX('value') or field or 'value' - */ - public function encrypt($fieldorvalue, $withQuotes = 1) - { - return $this->db->encrypt($fieldorvalue, $withQuotes); - } - - /** - * Validate a database transaction - * - * @param string $log Add more log to default log line - * @return int 1 if validation is OK or transaction level no started, 0 if ERROR - */ - public function commit($log = '') - { - return $this->db->commit($log); - } - - /** - * List information of columns into a table. - * - * @param string $table Name of table - * @return array Array with inforation on table - */ - public function DDLInfoTable($table) - { - return $this->db->DDLInfoTable($table); - } - - /** - * Free last resultset used. - * - * @param resource $resultset Fre cursor - * @return void - */ - public function free($resultset = null) - { - $this->db->free($resultset); - } - - /** - * Close database connexion - * - * @return boolean True if disconnect successfull, false otherwise - * @see connect() - */ - public function close() - { - return $this->db->close(); - } - - /** - * Return last query in error - * - * @return string lastqueryerror - */ - public function lastqueryerror() - { - return $this->db->lastqueryerror(); - } - - /** - * Return connexion ID - * - * @return string Id connexion - */ - public function DDLGetConnectId() - { - return $this->db->DDLGetConnectId(); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Returns the current line (as an object) for the resultset cursor - * - * @param resource|Connection $resultset Handler of the desired SQL request - * @return Object Object result line or false if KO or end of cursor - */ - public function fetch_object($resultset) - { - // phpcs:enable - return $this->db->fetch_object($resultset); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Select a database - * - * @param string $database Name of database - * @return boolean true if OK, false if KO - */ - public function select_db($database) - { - // phpcs:enable - return $this->db->select_db($database); - } -} diff --git a/htdocs/debugbar/class/autoloader.php b/htdocs/debugbar/class/autoloader.php deleted file mode 100644 index a0933151..00000000 --- a/htdocs/debugbar/class/autoloader.php +++ /dev/null @@ -1,35 +0,0 @@ - '', 'class' => '') - * - data: alias of title - */ - var TooltipIndicator = PhpDebugBar.DebugBar.TooltipIndicator = PhpDebugBar.DebugBar.Indicator.extend({ - - render: function() { - this.$icon = $('').appendTo(this.$el); - this.bindAttr('icon', function(icon) { - if (icon) { - this.$icon.attr('class', 'fa fa-' + icon); - } else { - this.$icon.attr('class', ''); - } - }); - - this.bindAttr(['title', 'data'], $('').addClass(csscls('text')).appendTo(this.$el)); - - this.$tooltip = $('').addClass(csscls('tooltip disabled')).appendTo(this.$el); - this.bindAttr('tooltip', function(tooltip) { - if (tooltip['html']) { - tooltipHTML = $('').html(tooltip['html']).addClass(csscls('tooltip-html')); - this.$tooltip.html(tooltipHTML).removeClass(csscls('disabled')); - if (tooltip['class']) { - this.$tooltip.addClass(csscls(tooltip['class'])); - } - } else { - this.$tooltip.addClass(csscls('disabled')); - } - }); - } - - }); - - /** - * LinkIndicator - * - * A customised indicator class that will allow "click" behaviour. - * - * Options: - * - icon - * - title - * - tooltip - * - data: alias of title - * - href - * - target - */ - var LinkIndicator = PhpDebugBar.DebugBar.LinkIndicator = PhpDebugBar.DebugBar.Indicator.extend({ - - tagName: 'a', - - render: function() { - LinkIndicator.__super__.render.apply(this); - this.bindAttr('href', function(href) { - this.$el.attr('href', href); - }); - this.bindAttr('target', function(target) { - this.$el.attr('target', target); - }); - } - - }); - -})(PhpDebugBar.$); \ No newline at end of file diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index cf337abf..8ccbd7ce 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -197,13 +197,14 @@ if ($object->id > 0) { * Show tabs */ $head = societe_prepare_head($object); - - print dol_get_fiche_head($head, 'supplier', $langs->trans("ThirdParty"), -1, 'company'); - $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'socid', $linkback, ($user->socid ? 0 : 1), 'rowid', 'nom'); + print dol_get_fiche_head($head, 'supplier', $langs->trans("ThirdParty"), -1, 'company'); + + + print '
    '; print '
    '; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bc0c7b9e..56e230ed 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2795,17 +2795,17 @@ class FactureFournisseur extends CommonInvoice $label .= ' - '.$moretitle; } - $ref = $this->ref; + $ref = $this->ref_supplier; if (empty($ref)) { $ref = $this->id; } $linkclose = ''; if (empty($notooltip)) { - if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowSupplierInvoice"); - $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; - } + // if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { + // $label = $langs->trans("ShowSupplierInvoice"); + // $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; + // } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose .= ' class="classfortooltip"'; } diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index e3304460..d8211eae 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2713,7 +2713,7 @@ if ($action == 'create') { $head = facturefourn_prepare_head($object); $titre = $langs->trans('SupplierInvoice'); - print dol_get_fiche_head($head, 'card', $titre, -1, 'supplier_invoice'); + //print dol_get_fiche_head($head, 'card', $titre, -1, 'supplier_invoice'); $formconfirm = ''; @@ -2955,6 +2955,8 @@ if ($action == 'create') { dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); + print dol_get_fiche_head($head, 'card', $titre, -1, 'supplier_invoice'); + print '
    '; print '
    '; print '
    '; diff --git a/htdocs/fourn/facture/document.php b/htdocs/fourn/facture/document.php index cff4a30f..ea6f1b5a 100644 --- a/htdocs/fourn/facture/document.php +++ b/htdocs/fourn/facture/document.php @@ -101,7 +101,7 @@ llxHeader('', $title, $helpurl); if ($object->id > 0) { $head = facturefourn_prepare_head($object); - print dol_get_fiche_head($head, 'documents', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice'); + //print dol_get_fiche_head($head, 'documents', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice'); $totalpaid = $object->getSommePaiement(); @@ -142,7 +142,7 @@ if ($object->id > 0) { $object->totalpaid = $totalpaid; // To give a chance to dol_banner_tab to use already paid amount to show correct status dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0); - + print dol_get_fiche_head($head, 'documents', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice'); print '
    '; print '
    '; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index ad03c482..3eac81ad 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -949,37 +949,37 @@ if ($search_all) { // If the user can view prospects other than his' $moreforfilter = ''; -if ($user->rights->user->user->lire) { - $langs->load("commercial"); - $moreforfilter .= '
    '; - $tmptitle = $langs->trans('ThirdPartiesOfSaleRepresentative'); - $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, $tmptitle, 'maxwidth200'); - $moreforfilter .= '
    '; -} +// if ($user->rights->user->user->lire) { +// $langs->load("commercial"); +// $moreforfilter .= '
    '; +// $tmptitle = $langs->trans('ThirdPartiesOfSaleRepresentative'); +// $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$formother->select_salesrepresentatives($search_sale, 'search_sale', $user, 0, $tmptitle, 'maxwidth200'); +// $moreforfilter .= '
    '; +// } // If the user can view prospects other than his' -if ($user->rights->user->user->lire) { - $moreforfilter .= '
    '; - $tmptitle = $langs->trans('LinkedToSpecificUsers'); - $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$form->select_dolusers($search_user, 'search_user', $tmptitle, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth200'); - $moreforfilter .= '
    '; -} +// if ($user->rights->user->user->lire) { +// $moreforfilter .= '
    '; +// $tmptitle = $langs->trans('LinkedToSpecificUsers'); +// $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$form->select_dolusers($search_user, 'search_user', $tmptitle, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth200'); +// $moreforfilter .= '
    '; +// } // If the user can view prospects other than his' -if (isModEnabled('categorie') && $user->rights->categorie->lire && ($user->rights->produit->lire || $user->rights->service->lire)) { - include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; - $moreforfilter .= '
    '; - $tmptitle = $langs->trans('IncludingProductWithTag'); - $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); - $moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"').$form->selectarray('search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0, '', 0, 0, 0, 0, 'maxwidth300 widthcentpercentminusx', 1); - $moreforfilter .= '
    '; -} - -if (isModEnabled('categorie')) { - require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; - $moreforfilter .= '
    '; - $tmptitle = $langs->trans('SuppliersCategoriesShort'); - $moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"').$formother->select_categories('supplier', $search_categ_sup, 'search_categ_sup', 1, $tmptitle); - $moreforfilter .= '
    '; -} +// if (isModEnabled('categorie') && $user->rights->categorie->lire && ($user->rights->produit->lire || $user->rights->service->lire)) { +// include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +// $moreforfilter .= '
    '; +// $tmptitle = $langs->trans('IncludingProductWithTag'); +// $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1); +// $moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"').$form->selectarray('search_product_category', $cate_arbo, $search_product_category, $tmptitle, 0, 0, '', 0, 0, 0, 0, 'maxwidth300 widthcentpercentminusx', 1); +// $moreforfilter .= '
    '; +// } + +// if (isModEnabled('categorie')) { +// require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +// $moreforfilter .= '
    '; +// $tmptitle = $langs->trans('SuppliersCategoriesShort'); +// $moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"').$formother->select_categories('supplier', $search_categ_sup, 'search_categ_sup', 1, $tmptitle); +// $moreforfilter .= '
    '; +// } $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { @@ -1245,9 +1245,9 @@ print '
    '; if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); } -if (!empty($arrayfields['f.ref']['checked'])) { - print_liste_field_titre($arrayfields['f.ref']['label'], $_SERVER['PHP_SELF'], 'f.ref,f.rowid', '', $param, '', $sortfield, $sortorder); -} +// if (!empty($arrayfields['f.ref']['checked'])) { +// print_liste_field_titre($arrayfields['f.ref']['label'], $_SERVER['PHP_SELF'], 'f.ref,f.rowid', '', $param, '', $sortfield, $sortorder); +// } if (!empty($arrayfields['f.ref_supplier']['checked'])) { print_liste_field_titre($arrayfields['f.ref_supplier']['label'], $_SERVER["PHP_SELF"], 'f.ref_supplier', '', $param, '', $sortfield, $sortorder); } @@ -1444,30 +1444,31 @@ if ($num > 0) { } print ''; } - if (!empty($arrayfields['f.ref']['checked'])) { - print '\n"; - if (!$i) { - $totalarray['nbfield']++; - } - } + // if (!empty($arrayfields['f.ref']['checked'])) { + // print '\n"; + // if (!$i) { + // $totalarray['nbfield']++; + // } + // } // Supplier ref if (!empty($arrayfields['f.ref_supplier']['checked'])) { print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/includes/html2pdf/Segment.php b/htdocs/includes/html2pdf/Segment.php new file mode 100644 index 00000000..9ff39516 --- /dev/null +++ b/htdocs/includes/html2pdf/Segment.php @@ -0,0 +1,273 @@ +name = (string) $name; + $this->xml = (string) $xml; + $this->odf = $odf; + $zipHandler = $this->odf->getConfig('ZIP_PROXY'); + $this->file = new $zipHandler($this->odf->getConfig('PATH_TO_TMP')); + $this->_analyseChildren($this->xml); + } + /** + * Returns the name of the segment + * + * @return string + */ + public function getName() + { + return $this->name; + } + /** + * Does the segment have children ? + * + * @return bool + */ + public function hasChildren() + { + return $this->getIterator()->hasChildren(); + } + /** + * Countable interface + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return count($this->children); + } + /** + * IteratorAggregate interface + * + * @return Iterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return new RecursiveIteratorIterator(new SegmentIterator($this->children), 1); + } + /** + * Replace variables of the template in the XML code + * All the children are also called + * Complete the current segment with new line + * + * @return string + */ + public function merge() + { + // To provide debug information on line number processed + global $count; + if (empty($count)) $count=1; + else $count++; + + if (empty($this->savxml)) $this->savxml = $this->xml; // Sav content of line at first line merged, so we will reuse original for next steps + $this->xml = $this->savxml; + $tmpvars = $this->vars; // Store into $tmpvars so we won't modify this->vars when completing data with empty values + if(isset($this->xml)){ + $reg='/\{\{\#(\w+)\}\}(.+)\{\{\/(\w+)\}\}/smU'; + $matches = array(); + preg_match_all($reg, $this->xml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (isset($tmpvars[$match[1]])){ + $this->xml = str_replace($match[0],$match[2],$this->xml); + } else { + $this->xml = str_replace($match[0],'',$this->xml); + } + } + + $reg='/\{(\w+)\}/'; + $matches = array(); + preg_match_all($reg, $this->xml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (isset($tmpvars[$match[1]])){ + $this->xml = str_replace($match[0],$tmpvars[$match[1]],$this->xml); + } else { + $this->xml= str_replace($match[0],'',$this->xml); + } + } + $this->xmlParsed .= $this->xml; + } + return $this->xmlParsed; + } + + /** + * Function to replace macros for invoice short and long month, invoice year + * + * Substitution occur when the invoice is generated, not considering the invoice date + * so do not (re)generate in a diferent date than the one that the invoice belongs to + * Perhaps it would be better to use the invoice issued date but I still do not know + * how to get it here + * + * Miguel Erill 09/04/2017 + * + * @param string $value String to convert + */ + public function macroReplace($text) + { + include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; + global $langs; + + $hoy = dol_getdate(dol_now('tzuser')); + $dateinonemontharray = dol_get_next_month($hoy['mon'], $hoy['year']); + $nextMonth = $dateinonemontharray['month']; + + $patterns=array( '/__CURRENTDAY__/u','/__CURENTWEEKDAY__/u', + '/__CURRENTMONTH__/u','/__CURRENTMONTHLONG__/u', + '/__NEXTMONTH__/u','/__NEXTMONTHLONG__/u', + '/__CURRENTYEAR__/u','/__NEXTYEAR__/u' ); + $values=array( $hoy['mday'], $langs->transnoentitiesnoconv($hoy['weekday']), + $hoy['mon'], $langs->transnoentitiesnoconv($hoy['month']), + $nextMonth, monthArray($langs)[$nextMonth], + $hoy['year'], $hoy['year']+1 ); + + $text=preg_replace($patterns, $values, $text); + + return $text; + } + + /** + * Analyse the XML code in order to find children + * + * @param string $xml Xml + * @return Segment + */ + protected function _analyseChildren($xml) + { + // $reg2 = "#\[!--\sBEGIN\s([\S]*)\s--\](?:<\/text:p>)?(.*)(?:)?\[!--\sEND\s(\\1)\s--\]#sm"; + $reg2 = "#\[!--\sBEGIN\s([\S]*)\s--\](.*)\[!--\sEND\s(\\1)\s--\]#sm"; + preg_match_all($reg2, $xml, $matches); + for ($i = 0, $size = count($matches[0]); $i < $size; $i++) { + if ($matches[1][$i] != $this->name) { + $this->children[$matches[1][$i]] = new self($matches[1][$i], $matches[0][$i], $this->odf); + } else { + $this->_analyseChildren($matches[2][$i]); + } + } + return $this; + } + + /** + * Assign a template variable to replace + * + * @param string $key Key + * @param string $value Value + * @param string $encode Encode + * @param string $charset Charset + * @throws SegmentException + * @return Segment + */ + public function setVars($key, $value, $encode = true, $charset = 'ISO-8859') + { + $tag = $this->odf->getConfig('DELIMITER_LEFT') . $key . $this->odf->getConfig('DELIMITER_RIGHT'); + + + $this->vars[$key] = $this->odf->convertVarToOdf($value, $encode, $charset); + + return $this; + } + + /** + * Assign a template variable as a picture + * + * @param string $key name of the variable within the template + * @param string $value path to the picture + * @throws OdfException + * @return Segment + */ + public function setImage($key, $value) + { + $filename = strtok(strrchr($value, '/'), '/.'); + $file = substr(strrchr($value, '/'), 1); + $size = @getimagesize($value); + if ($size === false) { + throw new OdfException("Invalid image"); + } + // Set the width and height of the page + list ($width, $height) = $size; + $width *= Odf::PIXEL_TO_CM; + $height *= Odf::PIXEL_TO_CM; + // Fix local-aware issues (eg: 12,10 -> 12.10) + $width = sprintf("%F", $width); + $height = sprintf("%F", $height); + + $xml = << +IMG; + $this->images[$value] = $file; + $this->setVars($key, $xml, false); + return $this; + } + /** + * Shortcut to retrieve a child + * + * @param string $prop Prop + * @return Segment + * @throws SegmentException + */ + public function __get($prop) + { + if (array_key_exists($prop, $this->children)) { + return $this->children[$prop]; + } else { + throw new SegmentException('child ' . $prop . ' does not exist'); + } + } + /** + * Proxy for setVars + * + * @param string $meth Meth + * @param array $args Args + * @return Segment + */ + public function __call($meth, $args) + { + try { + return $this->setVars($meth, $args[0]); + } catch (SegmentException $e) { + throw new SegmentException("method $meth nor var $meth exist"); + } + } + /** + * Returns the parsed XML + * + * @return string + */ + public function getXmlParsed() + { + return $this->xmlParsed; + } +} diff --git a/htdocs/includes/html2pdf/SegmentIterator.php b/htdocs/includes/html2pdf/SegmentIterator.php new file mode 100644 index 00000000..cb6b352f --- /dev/null +++ b/htdocs/includes/html2pdf/SegmentIterator.php @@ -0,0 +1,58 @@ +ref = $ref; + $this->key = 0; + $this->keys = array_keys($this->ref); + } + #[\ReturnTypeWillChange] + public function hasChildren() + { + return $this->valid() && $this->current() instanceof Segment; + } + #[\ReturnTypeWillChange] + public function current() + { + return $this->ref[$this->keys[$this->key]]; + } + #[\ReturnTypeWillChange] + function getChildren() + { + return new self($this->current()->children); + } + #[\ReturnTypeWillChange] + public function key() + { + return $this->key; + } + #[\ReturnTypeWillChange] + public function valid() + { + return array_key_exists($this->key, $this->keys); + } + #[\ReturnTypeWillChange] + public function rewind() + { + $this->key = 0; + } + #[\ReturnTypeWillChange] + public function next() + { + $this->key ++; + } +} + diff --git a/htdocs/includes/html2pdf/html2pdf.php b/htdocs/includes/html2pdf/html2pdf.php new file mode 100644 index 00000000..89ae0230 --- /dev/null +++ b/htdocs/includes/html2pdf/html2pdf.php @@ -0,0 +1,1012 @@ + 'PclZipProxy', // PclZipProxy, PhpZipProxy + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}', + 'PATH_TO_TMP' => '/tmp' + ); + protected $file; + protected $contentXml; // To store content of content.xml file + protected $metaXml; // To store content of meta.xml file + protected $stylesXml; // To store content of styles.xml file + protected $manifestXml; // To store content of META-INF/manifest.xml file + protected $tmpfile; + protected $tmpdir=''; + protected $images = array(); + protected $vars = array(); + protected $segments = array(); + + public $creator; + public $title; + public $subject; + public $userdefined=array(); + + const PIXEL_TO_CM = 0.026458333; + + /** + * Class constructor + * + * @param string $filename The name of the odt file + * @param string $config Array of config data + * @throws OdfException + */ + public function __construct($filename, $config = array()) + { + clearstatcache(); + + if (! is_array($config)) { + throw new OdfException('Configuration data must be provided as array'); + } + foreach ($config as $configKey => $configValue) { + if (array_key_exists($configKey, $this->config)) { + $this->config[$configKey] = $configValue; + } + } + + $md5uniqid = md5(uniqid()); + if ($this->config['PATH_TO_TMP']) $this->tmpdir = preg_replace('|[\/]$|', '', $this->config['PATH_TO_TMP']); // Remove last \ or / + $this->tmpdir .= ($this->tmpdir?'/':'').$md5uniqid; + $this->tmpfile = $this->tmpdir.'/'.$md5uniqid.'.odt'; // We keep .odt extension to allow OpenOffice usage during debug. + + // A working directory is required for some zip proxy like PclZipProxy + if (in_array($this->config['ZIP_PROXY'], array('PclZipProxy')) && ! is_dir($this->config['PATH_TO_TMP'])) { + throw new OdfException('Temporary directory '.$this->config['PATH_TO_TMP'].' must exists'); + } + + // Create tmp direcoty (will be deleted in destructor) + if (!file_exists($this->tmpdir)) { + $result = mkdir($this->tmpdir); + } + + // Load zip proxy + $zipHandler = $this->config['ZIP_PROXY']; + if (!defined('PCLZIP_TEMPORARY_DIR')) define('PCLZIP_TEMPORARY_DIR', $this->tmpdir); + include_once 'zip/'.$zipHandler.'.php'; + if (! class_exists($this->config['ZIP_PROXY'])) { + throw new OdfException($this->config['ZIP_PROXY'] . ' class not found - check your php settings'); + } + $this->file = new $zipHandler($this->tmpdir); + + + if ($this->file->open($filename) !== true) { // This also create the tmpdir directory + throw new OdfException("Error while Opening the file '$filename' - Check your odt filename"); + } + if (($this->contentXml = $this->file->getFromName('content.xml')) === false) { + throw new OdfException("Nothing to parse - Check that the content.xml file is correctly formed in source file '$filename'"); + } + if (($this->manifestXml = $this->file->getFromName('META-INF/manifest.xml')) === false) { + throw new OdfException("Something is wrong with META-INF/manifest.xml in source file '$filename'"); + } + if (($this->metaXml = $this->file->getFromName('meta.xml')) === false) { + throw new OdfException("Nothing to parse - Check that the meta.xml file is correctly formed in source file '$filename'"); + } + if (($this->stylesXml = $this->file->getFromName('styles.xml')) === false) { + throw new OdfException("Nothing to parse - Check that the styles.xml file is correctly formed in source file '$filename'"); + } + $this->file->close(); + + + //print "tmpdir=".$tmpdir; + //print "filename=".$filename; + //print "tmpfile=".$tmpfile; + + copy($filename, $this->tmpfile); + + // Now file has been loaded, we must move the [!-- BEGIN and [!-- END tags outside the + // _moveRowSegments(); + } + + /** + * Assing a template variable into ->vars. + * For example, key is {object_date} and value is '2021-01-01' + * + * @param string $key Name of the variable within the template + * @param string $value Replacement value + * @param bool $encode If true, special XML characters are encoded + * @param string $charset Charset + * @throws OdfException + * @return odf + */ + public function setVars($key, $value, $encode = true, $charset = 'ISO-8859') + { + $tag = $this->config['DELIMITER_LEFT'] . $key . $this->config['DELIMITER_RIGHT']; + + // TODO Warning string may be: + // {aaa} + // instead of {aaa} so we should enhance this function. + //print $key.'-'.$value.'-'.strpos($this->contentXml, $this->config['DELIMITER_LEFT'] . $key . $this->config['DELIMITER_RIGHT']).'
    '; + // if (strpos($this->contentXml, $tag) === false && strpos($this->stylesXml, $tag) === false) { + // // Add the throw only for development. In most cases, it is normal to not having the key into the document (only few keys are presents). + // //throw new OdfException("var $key not found in the document"); + // return $this; + // } + if (dol_textishtml($value)){ + $value=preg_replace('/(\r\n|\r|\n)/i', '', $value); + } + $this->vars[$key] = $this->convertVarToOdf($value, $encode, $charset); + + return $this; + } + + /** + * Replaces html tags found into the $value with ODT compatible tags and return the converted compatible string + * + * @param string $value Replacement value + * @param bool $encode If true, special XML characters are encoded + * @param string $charset Charset + * @return string String in ODTsyntax format + */ + public function convertVarToOdf($value, $encode = true, $charset = 'ISO-8859') + { + if ($value != null){ + $value = $encode ? html_entity_decode($value) : $value; + } + $value = ($charset == 'ISO-8859') ? utf8_encode($value) : $value; + $convertedValue = $value; + + // Check if the value includes html tags + if ($this->_hasHtmlTag($value) === true) { + // Default styles for strong/b, i/em, u, s, sub & sup + $automaticStyles = array( + '', + '', + '', + '', + '', + '' + ); + + $customStyles = array(); + $fontDeclarations = array(); + + $convertedValue = $this->_replaceHtmlWithOdtTag($this->_getDataFromHtml($value), $customStyles, $fontDeclarations); + + foreach ($customStyles as $key => $val) { + array_push($automaticStyles, '' . $val . ''); + } + + // Join the styles and add them to the content xml + $styles = ''; + foreach ($automaticStyles as $style) { + if (strpos($this->contentXml, $style) === false) { + $styles .= $style; + } + } + $this->contentXml = str_replace('', $styles . '', $this->contentXml); + + // Join the font declarations and add them to the content xml + $fonts = ''; + foreach ($fontDeclarations as $font) { + if (strpos($this->contentXml, 'style:name="' . $font . '"') === false) { + $fonts .= ''; + } + } + $this->contentXml = str_replace('', $fonts . '', $this->contentXml); + } else { + if ($value){ + $convertedValue = preg_replace('/(\r\n|\r|\n)/i', "", $value); + } + } + + return $convertedValue; + } + + /** + * Replaces html tags in with odt tags and returns an odt string + * + * @param array $tags An array with html tags generated by the getDataFromHtml() function + * @param array $customStyles An array of style defenitions that should be included inside the odt file + * @param array $fontDeclarations An array of font declarations that should be included inside the odt file + * @return string + */ + private function _replaceHtmlWithOdtTag($tags, &$customStyles, &$fontDeclarations) + { + if ($customStyles == null) $customStyles = array(); + if ($fontDeclarations == null) $fontDeclarations = array(); + + $odtResult = ''; + + foreach ((array) $tags as $tag) { + // Check if the current item is a tag or just plain text + if (isset($tag['text'])) { + $odtResult .= $tag['text']; + } elseif (isset($tag['name'])) { + switch ($tag['name']) { + case 'br': + $odtResult .= ''; + break; + case 'strong': + case 'b': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 'i': + case 'em': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 'u': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 's': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 'sub': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 'sup': + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + break; + case 'span': + if (isset($tag['attributes']['style'])) { + $odtStyles = ''; + foreach ($tag['attributes']['style'] as $styleName => $styleValue) { + switch ($styleName) { + case 'font-family': + $fontName = $styleValue; + if (strpos($fontName, ',') !== false) { + $fontName = explode(',', $fontName)[0]; + } + if (!in_array($fontName, $fontDeclarations)) { + array_push($fontDeclarations, $fontName); + } + $odtStyles .= ''; + break; + case 'font-size': + if (preg_match('/([0-9]+)\s?(px|pt)/', $styleValue, $matches)) { + $fontSize = intval($matches[1]); + if ($matches[2] == 'px') { + $fontSize = round($fontSize * 0.75); + } + $odtStyles .= ''; + } + break; + case 'color': + if (preg_match('/#[0-9A-Fa-f]{3}(?:[0-9A-Fa-f]{3})?/', $styleValue)) { + $odtStyles .= ''; + } + break; + } + } + if (strlen($odtStyles) > 0) { + // Generate a unique id for the style (using microtime and random because some CPUs are really fast...) + $key = floatval(str_replace('.', '', microtime(true)))+rand(0, 10); + $customStyles[$key] = $odtStyles; + $odtResult .= '' . ($tag['children'] != null ? $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations) : $tag['innerText']) . ''; + } + } + break; + default: + $odtResult .= $this->_replaceHtmlWithOdtTag($tag['children'], $customStyles, $fontDeclarations); + break; + } + } + } + return $odtResult; + } + + /** + * Checks if the given text is a html string + * @param string $text The text to check + * @return bool + */ + private function _isHtmlTag($text) + { + return preg_match('/<([A-Za-z]+)(?:\s([A-Za-z]+(?:\-[A-Za-z]+)?(?:=(?:".*?")|(?:[0-9]+))))*(?:(?:\s\/>)|(?:>(.*)<\/\1>))/', $text); + } + + /** + * Checks if the given text includes a html string + * @param string $text The text to check + * @return bool + */ + private function _hasHtmlTag($text) + { + if ($text){ + $result = preg_match_all('/<([A-Za-z]+)(?:\s([A-Za-z]+(?:\-[A-Za-z]+)?(?:=(?:".*?")|(?:[0-9]+))))*(?:(?:\s\/>)|(?:>(.*)<\/\1>))/', $text); + } else { + $result = null; + } + return is_numeric($result) && $result > 0; + } + + /** + * Returns an array of html elements + * @param string $html A string with html tags + * @return array + */ + private function _getDataFromHtml($html) + { + $tags = array(); + $tempHtml = $html; + + while (strlen($tempHtml) > 0) { + $matches = array(); + // Check if the string includes a html tag + if (preg_match_all('/<([A-Za-z]+)(?:\s([A-Za-z]+(?:\-[A-Za-z]+)?(?:=(?:".*?")|(?:[0-9]+))))*(?:(?:\s\/>)|(?:>(.*)<\/\1>))/', $tempHtml, $matches)) { + $tagOffset = strpos($tempHtml, $matches[0][0]); + // Check if the string starts with the html tag + if ($tagOffset > 0) { + // Push the text infront of the html tag to the result array + array_push($tags, array( + 'text' => substr($tempHtml, 0, $tagOffset) + )); + // Remove the text from the string + $tempHtml = substr($tempHtml, $tagOffset); + } + // Extract the attribute data from the html tag + $explodedAttributes = array(); + preg_match_all('/([0-9A-Za-z]+(?:="[0-9A-Za-z\:\-\s\,\;\#]*")?)+/', $matches[2][0], $explodedAttributes); + $explodedAttributes = array_filter($explodedAttributes[0]); + $attributes = array(); + // Store each attribute with its name in the $attributes array + $explodedAttributesCount = count($explodedAttributes); + for ($i=0; $i<$explodedAttributesCount; $i++) { + $attribute = trim($explodedAttributes[$i]); + // Check if the attribute has a value (like style="") or has no value (like required) + if (strpos($attribute, '=') !== false) { + $splitAttribute = explode('=', $attribute); + $attrName = trim($splitAttribute[0]); + $attrValue = trim(str_replace('"', '', $splitAttribute[1])); + // check if the current attribute is a style attribute + if (strtolower($attrName) == 'style') { + $attributes[$attrName] = array(); + if (strpos($attrValue, ';') !== false) { + // Split the style properties and store them in an array + $explodedStyles = explode(';', $attrValue); + $explodedStylesCount = count($explodedStyles); + for ($n=0; $n<$explodedStylesCount; $n++) { + $splitStyle = explode(':', $explodedStyles[$n]); + $attributes[$attrName][trim($splitStyle[0])] = trim($splitStyle[1]); + } + } else { + $splitStyle = explode(':', $attrValue); + $attributes[$attrName][trim($splitStyle[0])] = trim($splitStyle[1]); + } + } else { + // Store the value directly in the $attributes array if this is not the style attribute + $attributes[$attrName] = $attrValue; + } + } else { + $attributes[trim($attribute)] = true; + } + } + // Push the html tag data to the result array + array_push($tags, array( + 'name' => $matches[1][0], + 'attributes' => $attributes, + 'innerText' => strip_tags($matches[3][0]), + 'children' => $this->_hasHtmlTag($matches[3][0]) ? $this->_getDataFromHtml($matches[3][0]) : null + )); + // Remove the processed html tag from the html string + $tempHtml = substr($tempHtml, strlen($matches[0][0])); + } else { + array_push($tags, array( + 'text' => $tempHtml + )); + $tempHtml = ''; + } + } + return $tags; + } + + + /** + * Function to convert a HTML string into an ODT string + * + * @param string $value String to convert + * @return string String converted + */ + public function htmlToUTFAndPreOdf($value) + { + // We decode into utf8, entities + $value=dol_html_entity_decode($value, ENT_QUOTES|ENT_HTML5); + + // We convert html tags + $ishtml=dol_textishtml($value); + if ($ishtml) { + // If string is "MYPODUCT - Desc bold with é accent
    \n
    \nUn texto en español ?" + // Result after clean must be "MYPODUCT - Desc bold with é accent\n\nUn texto en español ?" + + // We want to ignore \n and we want all
    to be \n + $value=preg_replace('/(\r\n|\r|\n)/i', '', $value); + $value=preg_replace('/
    /i', "\n", $value); + $value=preg_replace('/\/]*>/i', "\n", $value); + $value=preg_replace('/\/]*\/>/i', "\n", $value); + + //$value=preg_replace('//','__lt__text:p text:style-name=__quot__bold__quot____gt__',$value); + //$value=preg_replace('/<\/strong>/','__lt__/text:p__gt__',$value); + + $value=dol_string_nohtmltag($value, 0); + } + + return $value; + } + + + /** + * Function to convert a HTML string into an ODT string + * + * @param string $value String to convert + * @return string String converted + */ + // public function preOdfToOdf($value) + // { + // $value = str_replace("\n", "", $value); + + // //$value = str_replace("__lt__", "<", $value); + // //$value = str_replace("__gt__", ">", $value); + // //$value = str_replace("__quot__", '"', $value); + + // return $value; + // } + + /** + * Assign a template variable as a picture + * + * @param string $key name of the variable within the template + * @param string $value path to the picture + * @throws OdfException + * @return odf + */ + public function setImage($key, $value) + { + $filename = strtok(strrchr($value, '/'), '/.'); + $file = substr(strrchr($value, '/'), 1); + $size = @getimagesize($value); + if ($size === false) { + throw new OdfException("Invalid image"); + } + list ($width, $height) = $size; + $width *= self::PIXEL_TO_CM; + $height *= self::PIXEL_TO_CM; + $xml = << +IMG; + $this->images[$value] = $file; + $this->setVars($key, $xml, false); + return $this; + } + + /** + * Move segment tags for lines of tables + * This function is called automatically within the constructor, so this->contentXml is clean before any other thing + * + * @return void + */ + private function _moveRowSegments() + { + // Replace BEGINxxx into BEGIN xxx + $this->contentXml = preg_replace('/\[!--\sBEGIN]>(row.[\S]*)\s--\]/sm', '[!-- BEGIN \\1 --]', $this->contentXml); + // Replace ENDxxx into END xxx + $this->contentXml = preg_replace('/\[!--\sEND]>(row.[\S]*)\s--\]/sm', '[!-- END \\1 --]', $this->contentXml); + + // Search all possible rows in the document + $reg1 = "#]*>(.*)
    #smU"; + $matches = array(); + preg_match_all($reg1, $this->contentXml, $matches); + for ($i = 0, $size = count($matches[0]); $i < $size; $i++) { + // Check if the current row contains a segment row.* + $reg2 = '#\[!--\sBEGIN\s(row.[\S]*)\s--\](.*)\[!--\sEND\s\\1\s--\]#sm'; + $matches2 = array(); + if (preg_match($reg2, $matches[0][$i], $matches2)) { + $balise = str_replace('row.', '', $matches2[1]); + // Move segment tags around the row + $replace = array( + '[!-- BEGIN ' . $matches2[1] . ' --]' => '', + '[!-- END ' . $matches2[1] . ' --]' => '', + ' '[!-- BEGIN ' . $balise . ' --]' => '[!-- END ' . $balise . ' --]' + ); + $replacedXML = str_replace(array_keys($replace), array_values($replace), $matches[0][$i]); + $this->contentXml = str_replace($matches[0][$i], $replacedXML, $this->contentXml); + } + } + } + + /** + * Merge template variables + * Called at the beginning of the _save function + * + * @param string $type 'content', 'styles' or 'meta' + * @return void + */ + private function _parse($type = 'content') + { + // Search all tags found into condition to complete $this->vars, so we will proceed all tests even if not defined + $reg='/\{\{\#(\w+)\}\}(.+)\{\{\/(\w+)\}\}/smU'; + $matches = array(); + preg_match_all($reg, $this->contentXml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (($match[1] !== "lines") && (strpos($match[1],"line_") !== 0)){ + if (isset($this->vars[$match[1]])){ + $this->contentXml = str_replace($match[0],$match[2],$this->contentXml); + } else { + $this->contentXml = str_replace($match[0],'',$this->contentXml); + } + } + + } + // $this->contentXml = str_replace('
    ','',$this->contentXml); + // $this->contentXml = str_replace('
    ','',$this->contentXml); + // $this->contentXml = str_replace('
    ','',$this->contentXml); + $reg='/\{(\w+)\}/'; + $matches = array(); + preg_match_all($reg, $this->contentXml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (strpos($match[1],"line_") !== 0){ + if (isset($this->vars[$match[1]])){ + $this->contentXml = str_replace($match[0],$this->vars[$match[1]],$this->contentXml); + } else { + $this->contentXml = str_replace($match[0],'',$this->contentXml); + } + } + } + $this->contentXml = preg_replace('/\xc2\xa0/', '', $this->contentXml); + preg_match_all($reg, $this->stylesXml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (strpos($match[1],"line_") !== 0){ + if (isset($this->vars[$match[1]])){ + $this->stylesXml = str_replace($match[0],$this->vars[$match[1]],$this->stylesXml); + } else { + $this->stylesXml = str_replace($match[0],'',$this->stylesXml); + } + } + } + preg_match_all($reg, $this->metaXml, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + if (strpos($match[1],"line_") !== 0){ + if (isset($this->vars[$match[1]])){ + $this->metaXml = str_replace($match[0],$this->vars[$match[1]],$this->metaXml); + } else { + $this->metaXml = str_replace($match[0],'',$this->metaXml); + } + } + } + } + + /** + * Add the merged segment to the document + * + * @param Segment $segment Segment + * @throws OdfException + * @return odf + */ + public function mergeSegment(Segment $segment) + { + if (! array_key_exists($segment->getName(), $this->segments)) { + throw new OdfException($segment->getName() . 'cannot be parsed, has it been set yet ?'); + } + $string = $segment->getName(); + $reg='/\{\{\#' . $string . '\}\}(.+)\{\{\/' . $string . '\}\}/smU'; + $this->contentXml = preg_replace($reg, $segment->getXmlParsed(), $this->contentXml); + return $this; + } + + /** + * Display all the current template variables + * + * @return string + */ + public function printVars() + { + return print_r('
    ' . print_r($this->vars, true) . '
    ', true); + } + + /** + * Display the XML content of the file from odt document + * as it is at the moment + * + * @return string + */ + public function __toString() + { + return $this->contentXml; + } + + /** + * Display loop segments declared with setSegment() + * + * @return string + */ + public function printDeclaredSegments() + { + return '
    ' . print_r(implode(' ', array_keys($this->segments)), true) . '
    '; + } + + /** + * Declare a segment in order to use it in a loop. + * Extract the segment and store it into $this->segments[]. Return it for next call. + * + * @param string $segment Segment + * @throws OdfException + * @return Segment + */ + public function setSegment($segment) + { + if (array_key_exists($segment, $this->segments)) { + return $this->segments[$segment]; + } + $reg='/\{\{\#('.$segment.')\}\}(.+)\{\{\/('.$segment.')\}\}/smU'; + $m = array(); + preg_match($reg, $this->contentXml, $m); + if (preg_match($reg, $this->contentXml, $m) == 0) { + throw new OdfException("'".$segment."' segment not found in the document. The tag {{#segment}} and {{/segment}} is not present into content file."); + } + $this->segments[$segment] = new Segment($segment, $m[2], $this); + return $this->segments[$segment]; + } + /** + * Save the odt file on the disk + * + * @param string $file name of the desired file + * @throws OdfException + * @return void + */ + public function saveToDisk($file = null) + { + if ($file !== null && is_string($file)) { + if (file_exists($file) && !(is_file($file) && is_writable($file))) { + throw new OdfException('Permission denied : can\'t create ' . $file); + } + $this->_save(); + copy($this->tmpfile, $file); + } else { + $this->_save(); + } + } + + /** + * Write output file onto disk + * + * @throws OdfException + * @return void + */ + private function _save() + { + $res=$this->file->open($this->tmpfile); // tmpfile is odt template + $this->_parse('content'); + //$this->_parse('styles'); + //$this->_parse('meta'); + + $this->setMetaData(); + //print $this->metaXml;exit; + + if (! $this->file->addFromString('content.xml', $this->contentXml)) { + throw new OdfException('Error during file export addFromString content'); + } + if (! $this->file->addFromString('meta.xml', $this->metaXml)) { + throw new OdfException('Error during file export addFromString meta'); + } + if (! $this->file->addFromString('styles.xml', $this->stylesXml)) { + throw new OdfException('Error during file export addFromString styles'); + } + + foreach ($this->images as $imageKey => $imageValue) { + // Add the image inside the ODT document + $this->file->addFile($imageKey, 'Pictures/' . $imageValue); + // Add the image to the Manifest (which maintains a list of images, necessary to avoid "Corrupt ODT file. Repair?" when opening the file with LibreOffice) + $this->addImageToManifest($imageValue); + } + if (! $this->file->addFromString('./META-INF/manifest.xml', $this->manifestXml)) { + throw new OdfException('Error during file export: manifest.xml'); + } + $this->file->close(); + } + + /** + * Update Meta information + * 2013-03-16T14:06:25 + * + * @return void + */ + public function setMetaData() + { + if (empty($this->creator)) $this->creator=''; + + $this->metaXml = preg_replace('/.*<\/dc:date>/', ''.gmdate("Y-m-d\TH:i:s").'', $this->metaXml); + $this->metaXml = preg_replace('/.*<\/dc:creator>/', ''.(($this->title)?htmlspecialchars($this->creator):"").'', $this->metaXml); + $this->metaXml = preg_replace('/.*<\/dc:title>/', ''.(($this->title)?htmlspecialchars($this->title):"").'', $this->metaXml); + $this->metaXml = preg_replace('/.*<\/dc:subject>/', ''.(($this->title)?htmlspecialchars($this->subject):"").'', $this->metaXml); + + if (count($this->userdefined)) { + foreach ($this->userdefined as $key => $val) { + $this->metaXml = preg_replace('', '', $this->metaXml); + $this->metaXml = preg_replace('/.*<\/meta:user-defined>/', '', $this->metaXml); + $this->metaXml = str_replace('', ''.(($this->title)?htmlspecialchars($val):"").'', $this->metaXml); + } + } + } + + /** + * Update Manifest file according to added image files + * + * @param string $file Image file to add into manifest content + * @return void + */ + public function addImageToManifest($file) + { + // Get the file extension + $ext = substr(strrchr($file, '.'), 1); + // Create the correct image XML entry to add to the manifest (this is necessary because ODT format requires that we keep a list of the images in the manifest.xml) + $add = ' '."\n"; + // Append the image to the manifest + $this->manifestXml = str_replace('', $add.'', $this->manifestXml); // we replace the manifest closing tag by the image XML entry + manifest closing tag (this results in appending the data, we do not overwrite anything) + } + + /** + * Export the file as attached file by HTTP + * + * @param string $name (optional) + * @throws OdfException + * @return void + */ + public function exportAsAttachedFile($name = "") + { + $this->_save(); + if (headers_sent($filename, $linenum)) { + throw new OdfException("headers already sent ($filename at $linenum)"); + } + + if ( $name == "" ) { + $name = md5(uniqid()) . ".odt"; + } + + header('Content-type: application/vnd.oasis.opendocument.text'); + header('Content-Disposition: attachment; filename="'.$name.'"'); + header('Content-Length: '.filesize($this->tmpfile)); + readfile($this->tmpfile); + } + + /** + * Convert the ODT file to PDF and export the file as attached file by HTTP + * Note: you need to have JODConverter and OpenOffice or LibreOffice installed and executable on the same system as where this php script will be executed. You also need to chmod +x odt2pdf.sh + * + * @param string $name Name of ODT file to generate before generating PDF + * @throws OdfException + * @return void + */ + public function exportAsAttachedPDF($name = "") + { + global $conf; + + if ( $name == "" ) $name = "temp".md5(uniqid()); + + dol_syslog(get_class($this).'::exportAsAttachedPDF $name='.$name, LOG_DEBUG); + $this->saveToDisk($name); + + $execmethod=(empty($conf->global->MAIN_EXEC_USE_POPEN)?1:2); // 1 or 2 + // Method 1 sometimes hang the server. + + + // Export to PDF using LibreOffice + if (getDolGlobalString('MAIN_ODT_AS_PDF') == 'libreoffice') { + dol_mkdir($conf->user->dir_temp); // We must be sure the directory exists and is writable + + // We delete and recreate a subdir because the soffice may have change pemrissions on it + dol_delete_dir_recursive($conf->user->dir_temp.'/odtaspdf'); + dol_mkdir($conf->user->dir_temp.'/odtaspdf'); + + // Install prerequisites: apt install soffice libreoffice-common libreoffice-writer + // using windows libreoffice that must be in path + // using linux/mac libreoffice that must be in path + // Note PHP Config "fastcgi.impersonate=0" must set to 0 - Default is 1 + + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){ + $command ='soffice.exe --headless -env:UserInstallation=file:///'.$conf->user->dir_temp.'/odtaspdf --convert-to pdf pdf:writer_pdf_Export --outdir '. escapeshellarg(dirname($name)). " ".escapeshellarg($name); + } else { + $command ='soffice --headless -env:UserInstallation=file:///'.$conf->user->dir_temp.'/odtaspdf --convert-to pdf:writer_pdf_Export --outdir '. escapeshellarg(dirname($name)). " ".escapeshellarg($name); + } + } elseif (getDolGlobalString('MAIN_ODT_AS_PDF') == 'curl') { + $finfo = pathinfo($name); + $dksapikey=getDolGlobalString('MAIN_DKS_API_KEY'); + //$copyname = preg_replace('/[^A-Za-z0-9\-\_\.]/', '', $finfo['filename']); + //copy($name,dirname($name).'/'.$copyname.".odt"); + $command ='curl -q -A "DKS Tools" --header "HTTP_API_KEY: '.$dksapikey.'" -X POST -F '.escapeshellarg('odtfile=@'.$name).' -o '.escapeshellarg(dirname($name).'/'.$finfo['filename'].'.pdf').' https://service.dks.lu/odt2pdf/'; + file_put_contents("curl.log",$command."\n",FILE_APPEND); + } elseif (preg_match('/unoconv/', getDolGlobalString('MAIN_ODT_AS_PDF'))) { + // If issue with unoconv, see https://github.com/dagwieers/unoconv/issues/87 + + // MAIN_ODT_AS_PDF should be "sudo -u unoconv /usr/bin/unoconv" and userunoconv must have sudo to be root by adding file /etc/sudoers.d/unoconv with content www-data ALL=(unoconv) NOPASSWD: /usr/bin/unoconv . + + // Try this with www-data user: /usr/bin/unoconv -vvvv -f pdf /tmp/document-example.odt + // It must return: + //Verbosity set to level 4 + //Using office base path: /usr/lib/libreoffice + //Using office binary path: /usr/lib/libreoffice/program + //DEBUG: Connection type: socket,host=127.0.0.1,port=2002;urp;StarOffice.ComponentContext + //DEBUG: Existing listener not found. + //DEBUG: Launching our own listener using /usr/lib/libreoffice/program/soffice.bin. + //LibreOffice listener successfully started. (pid=9287) + //Input file: /tmp/document-example.odt + //unoconv: file `/tmp/document-example.odt' does not exist. + //unoconv: RuntimeException during import phase: + //Office probably died. Unsupported URL : "type detection failed" + //DEBUG: Terminating LibreOffice instance. + //DEBUG: Waiting for LibreOffice instance to exit + + // If it fails: + // - set shell of user to bash instead of nologin. + // - set permission to read/write to user on home directory /var/www so user can create the libreoffice , dconf and .cache dir and files then set permission back + + $command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name); + //$command = '/usr/bin/unoconv -vvv '.escapeshellcmd($name); + } else { + // deprecated old method using odt2pdf.sh (native, jodconverter, ...) + $tmpname=preg_replace('/\.odt/i', '', $name); + + if (getDolGlobalString('MAIN_DOL_SCRIPTS_ROOT')) { + $command = getDolGlobalString('MAIN_DOL_SCRIPTS_ROOT').'/scripts/odt2pdf/odt2pdf.sh '.escapeshellcmd($tmpname).' '.(is_numeric(getDolGlobalString('MAIN_ODT_AS_PDF'))?'jodconverter':getDolGlobalString('MAIN_ODT_AS_PDF')); + } else { + dol_syslog(get_class($this).'::exportAsAttachedPDF is used but the constant MAIN_DOL_SCRIPTS_ROOT with path to script directory was not defined.', LOG_WARNING); + $command = '../../scripts/odt2pdf/odt2pdf.sh '.escapeshellcmd($tmpname).' '.(is_numeric(getDolGlobalString('MAIN_ODT_AS_PDF'))?'jodconverter':getDolGlobalString('MAIN_ODT_AS_PDF')); + } + } + + //$dirname=dirname($name); + //$command = DOL_DOCUMENT_ROOT.'/includes/odtphp/odt2pdf.sh '.$name.' '.$dirname; + + dol_syslog(get_class($this).'::exportAsAttachedPDF $execmethod='.$execmethod.' Run command='.$command, LOG_DEBUG); + // TODO Use: + // $outputfile = DOL_DATA_ROOT.'/odt2pdf.log'; + // $result = $utils->executeCLI($command, $outputfile); and replace test on $execmethod. + // $retval will be $result['result'] + // $errorstring will be $result['output'] + $retval=0; $output_arr=array(); + if ($execmethod == 1) { + exec($command, $output_arr, $retval); + } + if ($execmethod == 2) { + $outputfile = DOL_DATA_ROOT.'/odt2pdf.log'; + + $ok=0; + $handle = fopen($outputfile, 'w'); + if ($handle) { + dol_syslog(get_class($this)."Run command ".$command, LOG_DEBUG); + fwrite($handle, $command."\n"); + $handlein = popen($command, 'r'); + while (!feof($handlein)) { + $read = fgets($handlein); + fwrite($handle, $read); + $output_arr[]=$read; + } + pclose($handlein); + fclose($handle); + } + if (! empty($conf->global->MAIN_UMASK)) @chmod($outputfile, octdec($conf->global->MAIN_UMASK)); + } + if ($retval == 0) { + dol_syslog(get_class($this).'::exportAsAttachedPDF $ret_val='.$retval, LOG_DEBUG); + $filename=''; $linenum=0; + + if (php_sapi_name() != 'cli') { // If we are in a web context (not into CLI context) + if (headers_sent($filename, $linenum)) { + throw new OdfException("headers already sent ($filename at $linenum)"); + } + + if (!empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { + $name=preg_replace('/\.od(x|t)/i', '', $name); + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$name.'.pdf"'); + readfile($name.".pdf"); + } + } + + if (!empty($conf->global->MAIN_ODT_AS_PDF_DEL_SOURCE)) { + unlink($name); + } + } else { + dol_syslog(get_class($this).'::exportAsAttachedPDF $ret_val='.$retval, LOG_DEBUG); + dol_syslog(get_class($this).'::exportAsAttachedPDF $output_arr='.var_export($output_arr, true), LOG_DEBUG); + if ($retval == 126) { + throw new OdfException('Permission execute convert script : ' . $command); + } else { + $errorstring=''; + foreach ($output_arr as $line) { + $errorstring.= $line."
    "; + } + throw new OdfException('ODT to PDF convert fail (option MAIN_ODT_AS_PDF is '.$conf->global->MAIN_ODT_AS_PDF.', command was '.$command.', retval='.$retval.') : ' . $errorstring); + } + } + } + + /** + * Returns a variable of configuration + * + * @param string $configKey Config key + * @return string The requested variable of configuration + */ + public function getConfig($configKey) + { + if (array_key_exists($configKey, $this->config)) { + return $this->config[$configKey]; + } + return false; + } + /** + * Returns the temporary working file + * + * @return string le chemin vers le fichier temporaire de travail + */ + public function getTmpfile() + { + return $this->tmpfile; + } + + /** + * Delete the temporary file when the object is destroyed + */ + public function __destruct() + { + if (file_exists($this->tmpfile)) { + unlink($this->tmpfile); + } + + if (file_exists($this->tmpdir)) { + $this->_rrmdir($this->tmpdir); + rmdir($this->tmpdir); + } + } + + /** + * Empty the temporary working directory recursively + * + * @param string $dir The temporary working directory + * @return void + */ + private function _rrmdir($dir) + { + if ($handle = opendir($dir)) { + while (($file = readdir($handle)) !== false) { + if ($file != '.' && $file != '..') { + if (is_dir($dir . '/' . $file)) { + $this->_rrmdir($dir . '/' . $file); + rmdir($dir . '/' . $file); + } else { + unlink($dir . '/' . $file); + } + } + } + closedir($handle); + } + } + + /** + * return the value present on odt in [valuename][/valuename] + * + * @param string $valuename Balise in the template + * @return string The value inside the balise + */ + public function getvalue($valuename) + { + $searchreg="/\\[".$valuename."\\](.*)\\[\\/".$valuename."\\]/"; + $matches = array(); + preg_match($searchreg, $this->contentXml, $matches); + $this->contentXml = preg_replace($searchreg, "", $this->contentXml); + return $matches[1]; + } +} diff --git a/htdocs/includes/html2pdf/zip/PclZipProxy.php b/htdocs/includes/html2pdf/zip/PclZipProxy.php new file mode 100644 index 00000000..45ea50d5 --- /dev/null +++ b/htdocs/includes/html2pdf/zip/PclZipProxy.php @@ -0,0 +1,160 @@ +tmpdir=preg_replace('|[//\/]$|','',$forcedir); // $this->tmpdir must not contains / at the end + } + + /** + * Open a Zip archive + * + * @param string $filename the name of the archive to open + * @return true if openning has succeeded + */ + public function open($filename) + { + if (true === $this->openned) { + $this->close(); + } + $this->filename = $filename; + $this->pclzip = new PclZip($this->filename); + $this->openned = true; + return true; + } + + /** + * Retrieve the content of a file within the archive from its name + * + * @param string $name the name of the file to extract + * @return the content of the file in a string + */ + public function getFromName($name) + { + if (false === $this->openned) { + return false; + } + $name = preg_replace("/(?:\.|\/)*(.*)/", "\\1", $name); + $extraction = $this->pclzip->extract(PCLZIP_OPT_BY_NAME, $name, + PCLZIP_OPT_EXTRACT_AS_STRING); + if (!empty($extraction)) { + return $extraction[0]['content']; + } + return false; + } + + /** + * Add a file within the archive from a string + * + * @param string $localname the local path to the file in the archive + * @param string $contents the content of the file + * @return true if the file has been successful added + */ + public function addFromString($localname, $contents) + { + if (false === $this->openned) { + return false; + } + if (file_exists($this->filename) && !is_writable($this->filename)) { + return false; + } + $localname = preg_replace("/(?:\.|\/)*(.*)/", "\\1", $localname); + $localpath = dirname($localname); + $tmpfilename = $this->tmpdir . '/' . basename($localname); + if (false !== file_put_contents($tmpfilename, $contents)) { + //print "tmpfilename=".$tmpfilename; + //print "localname=".$localname; + $res=$this->pclzip->delete(PCLZIP_OPT_BY_NAME, $localname); + $add = $this->pclzip->add($tmpfilename, + PCLZIP_OPT_REMOVE_PATH, $this->tmpdir, + PCLZIP_OPT_ADD_PATH, $localpath); + unlink($tmpfilename); + if (!empty($add)) { + return true; + } + } + return false; + } + + /** + * Add a file within the archive from a file + * + * @param string $filename the path to the file we want to add + * @param string $localname the local path to the file in the archive + * @return true if the file has been successful added + */ + public function addFile($filename, $localname = null) + { + if (false === $this->openned) { + return false; + } + if ((file_exists($this->filename) && !is_writable($this->filename)) + || !file_exists($filename)) { + return false; + } + if (isSet($localname)) { + $localname = preg_replace("/(?:\.|\/)*(.*)/", "\\1", $localname); + $localpath = dirname($localname); + $tmpfilename = $this->tmpdir . '/' . basename($localname); + } else { + $localname = basename($filename); + $tmpfilename = $this->tmpdir . '/' . $localname; + $localpath = ''; + } + if (file_exists($filename)) { + copy($filename, $tmpfilename); + $this->pclzip->delete(PCLZIP_OPT_BY_NAME, $localname); + $this->pclzip->add($tmpfilename, + PCLZIP_OPT_REMOVE_PATH, $this->tmpdir, + PCLZIP_OPT_ADD_PATH, $localpath); + unlink($tmpfilename); + return true; + } + return false; + } + + /** + * Close the Zip archive + * @return true + */ + public function close() + { + if (false === $this->openned) { + return false; + } + $this->pclzip = $this->filename = null; + $this->openned = false; + return true; + } +} + +?> diff --git a/htdocs/includes/html2pdf/zip/PhpZipProxy.php b/htdocs/includes/html2pdf/zip/PhpZipProxy.php new file mode 100644 index 00000000..0035858e --- /dev/null +++ b/htdocs/includes/html2pdf/zip/PhpZipProxy.php @@ -0,0 +1,92 @@ +zipArchive = new ZipArchive(); + } + /** + * Open a Zip archive + * + * @param string $filename the name of the archive to open + * @return true if openning has succeeded + */ + public function open($filename) + { + $this->filename = $filename; + return $this->zipArchive->open($filename, ZIPARCHIVE::CREATE); + } + /** + * Retrieve the content of a file within the archive from its name + * + * @param string $name the name of the file to extract + * @return the content of the file in a string + */ + public function getFromName($name) + { + return $this->zipArchive->getFromName($name); + } + /** + * Add a file within the archive from a string + * + * @param string $localname the local path to the file in the archive + * @param string $contents the content of the file + * @return true if the file has been successful added + */ + public function addFromString($localname, $contents) + { + if (file_exists($this->filename) && !is_writable($this->filename)) { + return false; + } + return $this->zipArchive->addFromString($localname, $contents); + } + /** + * Add a file within the archive from a file + * + * @param string $filename the path to the file we want to add + * @param string $localname the local path to the file in the archive + * @return true if the file has been successful added + */ + public function addFile($filename, $localname = null) + { + if ((file_exists($this->filename) && !is_writable($this->filename)) + || !file_exists($filename)) { + return false; + } + return $this->zipArchive->addFile($filename, $localname); + } + /** + * Close the Zip archive + * @return true + */ + public function close() + { + return $this->zipArchive->close(); + } +} +?> diff --git a/htdocs/includes/html2pdf/zip/ZipInterface.php b/htdocs/includes/html2pdf/zip/ZipInterface.php new file mode 100644 index 00000000..6b724859 --- /dev/null +++ b/htdocs/includes/html2pdf/zip/ZipInterface.php @@ -0,0 +1,50 @@ + diff --git a/htdocs/modulebuilder/template/COPYING b/htdocs/includes/html2pdf/zip/pclzip/LICENSE similarity index 84% rename from htdocs/modulebuilder/template/COPYING rename to htdocs/includes/html2pdf/zip/pclzip/LICENSE index 94a04532..dbbe3558 100644 --- a/htdocs/modulebuilder/template/COPYING +++ b/htdocs/includes/html2pdf/zip/pclzip/LICENSE @@ -1,5 +1,5 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies @@ -7,17 +7,15 @@ Preamble - The GNU General Public License is a free, copyleft license for -software and other kinds of works. + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to +our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. +software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you @@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. The precise terms and conditions for copying, distribution and modification follow. @@ -72,7 +60,7 @@ modification follow. 0. Definitions. - "This License" refers to version 3 of the GNU General Public License. + "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. @@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - 13. Use with the GNU Affero General Public License. + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single +under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General +Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published +GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's +versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. @@ -619,3 +617,45 @@ Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/htdocs/includes/html2pdf/zip/pclzip/composer.json b/htdocs/includes/html2pdf/zip/pclzip/composer.json new file mode 100644 index 00000000..fd36bfbf --- /dev/null +++ b/htdocs/includes/html2pdf/zip/pclzip/composer.json @@ -0,0 +1,20 @@ +{ + "name": "chamilo/pclzip", + "type": "library", + "description": "A PHP library that offers compression and extraction functions for Zip formatted archives", + "keywords": ["php", "zip"], + "homepage": "https://github.com/chamilo/pclzip", + "license": ["LGPL-2.1"], + "authors": [ + { + "name": "Vincent Blavet" + } + ], + "replace": { + "pclzip/pclzip": "^2.8" + }, + "autoload": { + "classmap": ["pclzip.lib.php"] + } +} + diff --git a/htdocs/includes/html2pdf/zip/pclzip/gnu-lgpl.txt b/htdocs/includes/html2pdf/zip/pclzip/gnu-lgpl.txt new file mode 100644 index 00000000..583509c7 --- /dev/null +++ b/htdocs/includes/html2pdf/zip/pclzip/gnu-lgpl.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/htdocs/includes/html2pdf/zip/pclzip/pclzip.lib.php b/htdocs/includes/html2pdf/zip/pclzip/pclzip.lib.php new file mode 100644 index 00000000..2a1a2b8d --- /dev/null +++ b/htdocs/includes/html2pdf/zip/pclzip/pclzip.lib.php @@ -0,0 +1,5415 @@ +zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function create($p_filelist) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + } else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } elseif ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + + // ----- The list is a list of string names + } else { + $v_string_list = $p_filelist; + } + + // ----- Look if the $p_filelist is a string + } elseif (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + + // ----- Invalid variable type for $p_filelist + } else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes = array( + PCLZIP_ATT_FILE_NAME => 'mandatory', + PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', + PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', + PCLZIP_ATT_FILE_MTIME => 'optional', + PCLZIP_ATT_FILE_CONTENT => 'optional', + PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function add($p_filelist) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + } else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + + // ----- The list is a list of string names + } else { + $v_string_list = $p_filelist; + } + + // ----- Look if the $p_filelist is a string + } elseif (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + + // ----- Invalid variable type for $p_filelist + } else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '" . gettype($p_filelist) . "' for p_filelist"); + + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes = array( + PCLZIP_ATT_FILE_NAME => 'mandatory', + PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional', + PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional', + PCLZIP_ATT_FILE_MTIME => 'optional', + PCLZIP_ATT_FILE_CONTENT => 'optional', + PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + public function listContent() + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return (0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) { + unset($p_list); + + return (0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function extract() + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return (0); + } + + // ----- Set default values + $v_options = array(); + // $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional', + PCLZIP_OPT_STOP_ON_ERROR => 'optional', + PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + } else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + + return (0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + public function extractByIndex($p_index) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return (0); + } + + // ----- Set default values + $v_options = array(); + // $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional', + PCLZIP_OPT_STOP_ON_ERROR => 'optional', + PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = false; + } else { + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + } else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } elseif ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array( + PCLZIP_OPT_BY_INDEX, + $p_index + ); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array( + PCLZIP_OPT_BY_INDEX => 'optional' + )); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return (0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + public function delete() + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return (0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array( + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + + return (0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + public function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + public function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + + return (0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \'' . $this->zipname . '\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privSwapBackMagicQuotes(); + + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + public function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) { + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + + // ----- Look if the $p_archive is a string (so a filename) + } elseif (is_string($p_archive)) { + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '" . $p_archive . "'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + + // ----- Invalid variable + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + public function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return (0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) { + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + + // ----- Look if the $p_archive_to_add is a string (so a filename) + } elseif (is_string($p_archive_to_add)) { + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + + // ----- Invalid variable + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return (PclErrorCode()); + } else { + return ($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorName($p_with_code = false) + { + $v_name = array( + PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', + PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', + PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return ($v_value . ' (' . $this->error_code . ')'); + } else { + return ($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function errorInfo($p_full = false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return (PclErrorString()); + } else { + if ($p_full) { + return ($this->errorName(true) . " : " . $this->error_string); + } else { + return ($this->error_string . " [code " . $this->error_code . "]"); + } + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** + // ***** ***** + // ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + public function privCheckFormat($p_level = 0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '" . $this->zipname . "'"); + + return (false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '" . $this->zipname . "'"); + + return (false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options = false) + { + $v_result = 1; + + // ----- Read the options + $i = 0; + while ($i < $p_size) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '" . $p_options_list[$i] . "' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH: + case PCLZIP_OPT_REMOVE_PATH: + case PCLZIP_OPT_ADD_PATH: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i + 1], false); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i + 1]; + if ((!is_integer($v_value)) || ($v_value < 0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value * 1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON: + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF: + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '" . PclZipUtilOptionText($p_options_list[$i]) . "' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i + 1]) && ($p_options_list[$i + 1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i + 1], false); + $i++; + } else { + } + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i + 1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i + 1]; + } elseif (is_array($p_options_list[$i + 1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG: + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + case PCLZIP_OPT_BY_PREG: + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i + 1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT: + case PCLZIP_OPT_ADD_COMMENT: + case PCLZIP_OPT_PREPEND_COMMENT: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i + 1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i + 1])) { + + // ----- Remove spaces + $p_options_list[$i + 1] = strtr($p_options_list[$i + 1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i + 1]); + } elseif (is_integer($p_options_list[$i + 1])) { + $v_work_list[0] = $p_options_list[$i + 1] . '-' . $p_options_list[$i + 1]; + } elseif (is_array($p_options_list[$i + 1])) { + $v_work_list = $p_options_list[$i + 1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag = false; + $v_sort_value = 0; + for ($j = 0; $j < sizeof($v_work_list); $j++) { + // ----- Explode the item + $v_item_list = explode("-", $v_work_list[$j]); + $v_size_item_list = sizeof($v_item_list); + + // ----- TBC : Here we might check that each item is a + // real integer ... + + // ----- Look for single value + if ($v_size_item_list == 1) { + // ----- Set the option value + $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; + $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[0]; + } elseif ($v_size_item_list == 2) { + // ----- Set the option value + $v_result_list[$p_options_list[$i]][$j]['start'] = $v_item_list[0]; + $v_result_list[$p_options_list[$i]][$j]['end'] = $v_item_list[1]; + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for list sort + if ($v_result_list[$p_options_list[$i]][$j]['start'] < $v_sort_value) { + $v_sort_flag = true; + + // ----- TBC : An automatic sort should be writen ... + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; + } + + // ----- Sort the items + if ($v_sort_flag) { + // TBC : To Be Completed + } + + // ----- Next option + $i++; + break; + + // ----- Look for options that request no value + case PCLZIP_OPT_REMOVE_ALL_PATH: + case PCLZIP_OPT_EXTRACT_AS_STRING: + case PCLZIP_OPT_NO_COMPRESSION: + case PCLZIP_OPT_EXTRACT_IN_OUTPUT: + case PCLZIP_OPT_REPLACE_NEWER: + case PCLZIP_OPT_STOP_ON_ERROR: + $v_result_list[$p_options_list[$i]] = true; + break; + + // ----- Look for options that request an octal value + case PCLZIP_OPT_SET_CHMOD: + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i + 1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT: + case PCLZIP_CB_POST_EXTRACT: + case PCLZIP_CB_PRE_ADD: + case PCLZIP_CB_POST_ADD: + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i + 1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i + 1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '" . $v_function_name . "()' is not an existing function for option '" . PclZipUtilOptionText($p_options_list[$i]) . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default: + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" . $p_options_list[$i] . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter " . PclZipUtilOptionText($key) . "(" . $key . ")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privOptionDefaultThreshold(&$p_options) + { + $v_result = 1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + $v_memory_limit = preg_replace('/\s*[KkMmGg]$/', '', $v_memory_limit); + + if ($last == 'g') { + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit * 1073741824; + } + if ($last == 'm') { + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit * 1048576; + } + if ($last == 'k') { + $v_memory_limit = $v_memory_limit * 1024; + } + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit * PCLZIP_TEMPORARY_FILE_RATIO); + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options = false) + { + $v_result = 1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '" . $v_key . "' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type " . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + break; + + case PCLZIP_ATT_FILE_NEW_SHORT_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type " . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + break; + + case PCLZIP_ATT_FILE_NEW_FULL_NAME: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type " . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + break; + + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT: + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type " . gettype($v_value) . ". String expected for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + $p_filedescr['comment'] = $v_value; + break; + + case PCLZIP_ATT_FILE_MTIME: + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type " . gettype($v_value) . ". Integer expected for attribute '" . PclZipUtilOptionText($v_key) . "'"); + + return PclZip::errorCode(); + } + + $p_filedescr['mtime'] = $v_value; + break; + + case PCLZIP_ATT_FILE_CONTENT: + $p_filedescr['content'] = $v_value; + break; + + default: + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" . $v_key . "'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key = reset($v_requested_options); $key = key($v_requested_options); $key = next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter " . PclZipUtilOptionText($key) . "(" . $key . ")"); + + return PclZip::errorCode(); + } + } + } + } + + // end foreach + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + public function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result = 1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i = 0; $i < sizeof($p_filedescr_list); $i++) { + + // ----- Get filedescr + $v_descr = $p_filedescr_list[$i]; + + // ----- Reduce the filename + $v_descr['filename'] = PclZipUtilTranslateWinPath($v_descr['filename'], false); + $v_descr['filename'] = PclZipUtilPathReduction($v_descr['filename']); + + // ----- Look for real file or folder + if (file_exists($v_descr['filename'])) { + if (@is_file($v_descr['filename'])) { + $v_descr['type'] = 'file'; + } elseif (@is_dir($v_descr['filename'])) { + $v_descr['type'] = 'folder'; + } elseif (@is_link($v_descr['filename'])) { + // skip + continue; + } else { + // skip + continue; + } + + // ----- Look for string added as file + } elseif (isset($v_descr['content'])) { + $v_descr['type'] = 'virtual_file'; + + // ----- Missing file + } else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '" . $v_descr['filename'] . "' does not exist"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Calculate the stored filename + $this->privCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'] . '/' . $v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'] . '/' . $v_item_handler; + } else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } else { + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result = 1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result = 1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) { + + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_zip_temp_name . '\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i = 0, $v_count = 0; $i < sizeof($v_header_list); $i++) { + // ----- Create the file header + if ($v_header_list[$i]['status'] == 'ok') { + if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment . $p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT] . $v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd) - $v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count + $v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privOpenFd($p_mode) + { + $v_result = 1; + + // ----- Look if already open + if ($this->zip_fd != 0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \'' . $this->zipname . '\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \'' . $this->zipname . '\' in ' . $p_mode . ' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privCloseFd() + { + $v_result = 1; + + if ($this->zip_fd != 0) { + @fclose($this->zip_fd); + } + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- + // function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + public function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result = 1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i = 0, $v_count = 0; $i < sizeof($v_header_list); $i++) { + // ----- Create the file header + if ($v_header_list[$i]['status'] == 'ok') { + if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd) - $v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result = 1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j = 0; ($j < sizeof($p_filedescr_list)) && ($v_result == 1); $j++) { + // ----- Format the filename + $p_filedescr_list[$j]['filename'] = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); + + // ----- Skip empty file names + // TBC : Can this be possible ? not checked in DescrParseAtt ? + if ($p_filedescr_list[$j]['filename'] == "") { + continue; + } + + // ----- Check the filename + if (($p_filedescr_list[$j]['type'] != 'virtual_file') && (!file_exists($p_filedescr_list[$j]['filename']))) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File '" . $p_filedescr_list[$j]['filename'] . "' does not exist"); + + return PclZip::errorCode(); + } + + // ----- Look if it is a file or a dir with no all path remove option + // or a dir with all its path removed + // if ( (is_file($p_filedescr_list[$j]['filename'])) + // || ( is_dir($p_filedescr_list[$j]['filename']) + if (($p_filedescr_list[$j]['type'] == 'file') || ($p_filedescr_list[$j]['type'] == 'virtual_file') || (($p_filedescr_list[$j]['type'] == 'folder') && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + + // ----- Add the file + $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result = 1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; + // TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type'] == 'file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + + // ----- Look for regular folder + } elseif ($p_filedescr['type'] == 'folder') { + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + + // ----- Look for virtual file + } elseif ($p_filedescr['type'] == 'virtual_file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } elseif ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])))) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + + // ----- Use "in memory" zip algo + } else { + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + + // ----- Look for normal compression + } else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + } + + // ----- Look for a virtual file (a file from string) + } elseif ($p_filedescr['type'] == 'virtual_file') { + + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + + // ----- Look for normal compression + } else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + // ----- Look for a directory + } elseif ($p_filedescr['type'] == 'folder') { + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result = PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \'' . $v_gzip_temp_name . '\' in binary write mode'); + + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \'' . $v_gzip_temp_name . '\' has invalid filesize - should be minimum 18 bytes'); + + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_gzip_temp_name . '\' in binary read mode'); + + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name) - 8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name) - 18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_gzip_temp_name . '\' in binary read mode'); + + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result = 1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } else { + $p_remove_all_dir = 0; + } + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + + // ----- Look for path and/or short name change + } else { + + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'] . '/'; + } + $v_stored_filename = $v_dir . $p_filedescr['new_short_name']; + } else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + + // ----- Look for partial path remove + } elseif ($p_remove_dir != "") { + if (substr($p_remove_dir, -1) != '/') { + $p_remove_dir .= "/"; + } + + if ((substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { + + if ((substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./" . $p_remove_dir; + } + if ((substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } else { + $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") { + $v_stored_filename = $p_add_dir . $v_stored_filename; + } else { + $v_stored_filename = $p_add_dir . "/" . $v_stored_filename; + } + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteFileHeader(&$p_header) + { + $v_result = 1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours'] << 11) + ($v_date['minutes'] << 5) + $v_date['seconds'] / 2; + $v_mdate = (($v_date['year'] - 1980) << 9) + ($v_date['mon'] << 5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteCentralFileHeader(&$p_header) + { + $v_result = 1; + + // TBC + //for (reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours'] << 11) + ($v_date['minutes'] << 5) + $v_date['seconds'] / 2; + $v_mdate = (($v_date['year'] - 1980) << 9) + ($v_date['mon'] << 5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result = 1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privList(&$p_list) + { + $v_result = 1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \'' . $this->zipname . '\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i = 0; $i < $v_central_dir['entries']; $i++) { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result = 1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external'] & 0x00000010) == 0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + public function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result = 1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if (($p_path == "") || ((substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path, 1, 2) != ":/"))) { + $p_path = "./" . $p_path; + } + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") { + $p_path = substr($p_path, 0, strlen($p_path) - 1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) { + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i = 0, $v_nb_extracted = 0; $i < $v_central_dir['entries']; $i++) { + + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j = 0; ($j < sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { + + // ----- Look for a directory + if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { + + // ----- Look if the directory is in the filename path + if ((strlen($v_header['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + + // ----- Look for a filename + } elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_extract = true; + } + } + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + elseif ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + */ + + // ----- Look for extract by preg rule + } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + + // ----- Look for extract by index rule + } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j = $j_start; ($j < sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { + + if (($i >= $p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i <= $p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i >= $p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j + 1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start'] > $i) { + break; + } + } + + // ----- Look for no rule, which means extract all the archive + } else { + $v_extract = true; + } + + // ----- Check compression method + if (($v_extract) && (($v_header['compression'] != 8) && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename '" . $v_header['stored_filename'] . "' is " . "compressed by an unsupported compression " . "method (" . $v_header['compression'] . ") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, "Unsupported encryption for " . " filename '" . $v_header['stored_filename'] . "'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) { + + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + + // ----- Look for extraction in standard output + } elseif ((isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + + // ----- Look for normal extraction + } else { + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + public function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result = 1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + // ----- Return + return $v_result; + } + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external'] & 0x00000010) == 0x00000010) { + + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + + // ----- Look for path to remove + } elseif ($p_remove_path != "") { + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) { + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) { + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path . "/" . $p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], $p_entry['filename']); + if ($v_inclusion == 0) { + + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, "Filename '" . $p_entry['filename'] . "' is " . "outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) { + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) { + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, "Filename '" . $p_entry['filename'] . "' is " . "already used by an existing directory"); + + return PclZip::errorCode(); + } + + // ----- Look if file is write protected + } elseif (!is_writeable($p_entry['filename'])) { + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Filename '" . $p_entry['filename'] . "' exists " . "and is write protected"); + + return PclZip::errorCode(); + } + + // ----- Look if the extracted file is older + } elseif (filemtime($p_entry['filename']) > $p_entry['mtime']) { + // ----- Change the file status + if ((isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) && ($p_options[PCLZIP_OPT_REPLACE_NEWER] === true)) { + } else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ((isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR] === true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Newer version of '" . $p_entry['filename'] . "' exists " . "and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + + return PclZip::errorCode(); + } + } + } else { + } + + // ----- Check the directory availability and create it if necessary + } else { + if ((($p_entry['external'] & 0x00000010) == 0x00000010) || (substr($p_entry['filename'], -1) == '/')) { + $v_dir_to_check = $p_entry['filename']; + } elseif (!strstr($p_entry['filename'], "/")) { + $v_dir_to_check = ""; + } else { + $v_dir_to_check = dirname($p_entry['filename']); + } + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external'] & 0x00000010) == 0x00000010))) != 1) { + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external'] & 0x00000010) == 0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + + } else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \'' . $p_entry['filename'] . '\' is encrypted. Encrypted files are not supported.'); + + return PclZip::errorCode(); + } + + // ----- Look for using temporary file to unzip + if ((!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])))) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + + // ----- Look for extract in memory + } else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === false) { + + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + + // ----- Look for post-extract callback + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result = 1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \'' . $v_gzip_temp_name . '\' in binary write mode'); + + return PclZip::errorCode(); + } + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_gzip_temp_name . '\' in binary read mode'); + + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result = 1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external'] & 0x00000010) == 0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + + // ----- Look for post-extract callback + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result = 1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + // ----- Return + return $v_result; + } + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external'] & 0x00000010) == 0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } else { + + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === false) { + // TBC + } + } + + // ----- Trace + } else { + // TBC : error : can not extract a folder in a string + } + + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + + // ----- Look for post-extract callback + } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + // eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadFileHeader(&$p_header) + { + $v_result = 1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : " . strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F) * 2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } else { + $p_header['mtime'] = time(); + } + + // TBC + //for (reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadCentralFileHeader(&$p_header) + { + $v_result = 1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : " . strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) { + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + } else { + $p_header['filename'] = ''; + } + + // ----- Get extra + if ($p_header['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + } else { + $p_header['extra'] = ''; + } + + // ----- Get comment + if ($p_header['comment_len'] != 0) { + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + } else { + $p_header['comment'] = ''; + } + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F) * 2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } else { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + public function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result = 1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privReadEndCentralDir(&$p_central_dir) + { + $v_result = 1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \'' . $this->zipname . '\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size - 22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size - 22)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \'' . $this->zipname . '\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) { + $v_maximum_size = $v_size; + } + @fseek($this->zip_fd, $v_size - $v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size - $v_maximum_size)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \'' . $this->zipname . '\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = (($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : " . strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'The central dir is not at the end of the archive.' . ' Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } else { + $p_central_dir['comment'] = ''; + } + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for (reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result = 1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i = 0, $v_nb_extracted = 0; $i < $v_central_dir['entries']; $i++) { + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ((isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j = 0; ($j < sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { + + // ----- Look for a directory + if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { + + // ----- Look if the directory is in the filename path + if ((strlen($v_header_list[$v_nb_extracted]['stored_filename']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } elseif ((($v_header_list[$v_nb_extracted]['external'] & 0x00000010) == 0x00000010) /* Indicates a folder */ && ($v_header_list[$v_nb_extracted]['stored_filename'] . '/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + + // ----- Look for a filename + } elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_found = true; + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + elseif ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + */ + + // ----- Look for extract by preg rule + } elseif ((isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + + // ----- Look for extract by index rule + } elseif ((isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j = $j_start; ($j < sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { + + if (($i >= $p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i <= $p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i >= $p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j + 1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start'] > $i) { + break; + } + } + } else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) { + unset($v_header_list[$v_nb_extracted]); + } else { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i = 0; $i < sizeof($v_header_list); $i++) { + + // ----- Calculate the position of the header + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i = 0; $i < sizeof($v_header_list); $i++) { + // ----- Create the file header + if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd) - $v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + + // ----- Remove every files : reset the file + } elseif ($v_central_dir['entries'] != 0) { + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + public function privDirCheck($p_dir, $p_is_dir = false) + { + $v_result = 1; + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1) == '/')) { + $p_dir = substr($p_dir, 0, strlen($p_dir) - 1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) { + // ----- Look for parent directory + if ($p_parent_dir != "") { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privMerge(&$p_archive_to_add) + { + $v_result = 1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) { + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) { + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { + $this->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result = $p_archive_to_add->privOpenFd('rb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_zip_temp_name . '\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'] . ' ' . $v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd) - $v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries'] + $v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDuplicate($p_archive_filename) + { + $v_result = 1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) { + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('wb')) != 1) { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \'' . $p_archive_filename . '\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privErrorLog($p_error_code = 0, $p_error_string = '') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + public function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privDisableMagicQuotes() + { + $v_result = 1; + + // ----- Look if function exists + if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + public function privSwapBackMagicQuotes() + { + $v_result = 1; + + // ----- Look if function exists + if ((!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- +} + +// End of class +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilPathReduction() +// Description : +// Parameters : +// Return Values : +// -------------------------------------------------------------------------------- +function PclZipUtilPathReduction($p_dir) +{ + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i = sizeof($v_list) - 1; $i >= 0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } elseif ($v_list[$i] == "..") { + $v_skip++; + } elseif ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/" . $v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + + // ----- Last '/' i.e. indicates a directory + } elseif ($i == (sizeof($v_list) - 1)) { + $v_result = $v_list[$i]; + + // ----- Double '/' inside the path + } else { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } else { + $v_result = $v_list[$i] . ($i != (sizeof($v_list) - 1) ? "/" . $v_result : ""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../' . $v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilPathInclusion() +// Description : +// This function indicates if the path $p_path is under the $p_dir tree. Or, +// said in an other way, if the file or sub-dir $p_path is inside the dir +// $p_dir. +// The function indicates also if the path is exactly the same as the dir. +// This function supports path with duplicated '/' like '//', but does not +// support '.' or '..' statements. +// Parameters : +// Return Values : +// 0 if $p_path is not inside directory $p_dir +// 1 if $p_path is inside directory $p_dir +// 2 if $p_path is exactly the same as $p_dir +// -------------------------------------------------------------------------------- +function PclZipUtilPathInclusion($p_dir, $p_path) +{ + $v_result = 1; + + // ----- Look for path beginning by ./ + if (($p_dir == '.') || ((strlen($p_dir) >= 2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), false) . '/' . substr($p_dir, 1); + } + if (($p_path == '.') || ((strlen($p_path) >= 2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), false) . '/' . substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ($v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) { + $j++; + } + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) { + $i++; + } + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } elseif ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilCopyBlock() +// Description : +// Parameters : +// $p_mode : read/write compression mode +// 0 : src & dest normal +// 1 : src gzip, dest normal +// 2 : src normal, dest gzip +// 3 : src & dest gzip +// Return Values : +// -------------------------------------------------------------------------------- +function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode = 0) +{ + $v_result = 1; + + if ($p_mode == 0) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode == 1) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode == 2) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } elseif ($p_mode == 3) { + while ($p_size != 0) { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilRename() +// Description : +// This function tries to do a simple rename() function. If it fails, it +// tries to copy the $p_src file in a new $p_dest file and then unlink the +// first one. +// Parameters : +// $p_src : Old filename +// $p_dest : New filename +// Return Values : +// 1 on success, 0 on failure. +// -------------------------------------------------------------------------------- +function PclZipUtilRename($p_src, $p_dest) +{ + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } elseif (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilOptionText() +// Description : +// Translate option value in text. Mainly for debug purpose. +// Parameters : +// $p_option : the option value. +// Return Values : +// The option text value. +// -------------------------------------------------------------------------------- +function PclZipUtilOptionText($p_option) +{ + + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if ((($v_prefix == 'PCLZIP_OPT') || ($v_prefix == 'PCLZIP_CB_') || ($v_prefix == 'PCLZIP_ATT')) && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; +} +// -------------------------------------------------------------------------------- + +// -------------------------------------------------------------------------------- +// Function : PclZipUtilTranslateWinPath() +// Description : +// Translate windows path by replacing '\' by '/' and optionally removing +// drive letter. +// Parameters : +// $p_path : path to translate. +// $p_remove_disk_letter : true | false +// Return Values : +// The path translated. +// -------------------------------------------------------------------------------- +function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter = true) +{ + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position + 1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0, 1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + + return $p_path; +} +// -------------------------------------------------------------------------------- diff --git a/htdocs/includes/html2pdf/zip/pclzip/readme.txt b/htdocs/includes/html2pdf/zip/pclzip/readme.txt new file mode 100644 index 00000000..f0281349 --- /dev/null +++ b/htdocs/includes/html2pdf/zip/pclzip/readme.txt @@ -0,0 +1,425 @@ +// -------------------------------------------------------------------------------- +// PclZip 2.8.4 - readme.txt +// -------------------------------------------------------------------------------- +// License GNU/LGPL - August 2009 +// Vincent Blavet - vincent@phpconcept.net +// http://www.phpconcept.net +// -------------------------------------------------------------------------------- + + + +0 - Summary +============ + 1 - Introduction + 2 - What's new + 3 - Corrected bugs + 4 - Known bugs or limitations + 5 - License + 6 - Warning + 7 - Documentation + 8 - Author + 9 - Contribute + +1 - Introduction +================ + + PclZip is a library that allow you to manage a Zip archive. + + Full documentation about PclZip can be found here : http://www.phpconcept.net/pclzip + +2 - What's new +============== + + Version 2.8.4 : + - Update composer.json to indicate that pclzip/pclzip is replaced + + Version 2.8.3 : + - Fix compatibility with PHP v7.1 + + Version 2.8.2 : + - PCLZIP_CB_PRE_EXTRACT and PCLZIP_CB_POST_EXTRACT are now supported with + extraction as a string (PCLZIP_OPT_EXTRACT_AS_STRING). The string + can also be modified in the post-extract call back. + **Bugs correction : + - PCLZIP_OPT_REMOVE_ALL_PATH was not working correctly + - Remove use of eval() and do direct call to callback functions + - Correct support of 64bits systems (Thanks to WordPress team) + + Version 2.8.1 : + - Move option PCLZIP_OPT_BY_EREG to PCLZIP_OPT_BY_PREG because ereg() is + deprecated in PHP 5.3. When using option PCLZIP_OPT_BY_EREG, PclZip will + automatically replace it by PCLZIP_OPT_BY_PREG. + + Version 2.8 : + - Improve extraction of zip archive for large files by using temporary files + This feature is working like the one defined in r2.7. + Options are renamed : PCLZIP_OPT_TEMP_FILE_ON, PCLZIP_OPT_TEMP_FILE_OFF, + PCLZIP_OPT_TEMP_FILE_THRESHOLD + - Add a ratio constant PCLZIP_TEMPORARY_FILE_RATIO to configure the auto + sense of temporary file use. + - Bug correction : Reduce filepath in returned file list to remove ennoying + './/' preambule in file path. + + Version 2.7 : + - Improve creation of zip archive for large files : + PclZip will now autosense the configured memory and use temporary files + when large file is suspected. + This feature can also ne triggered by manual options in create() and add() + methods. 'PCLZIP_OPT_ADD_TEMP_FILE_ON' force the use of temporary files, + 'PCLZIP_OPT_ADD_TEMP_FILE_OFF' disable the autosense technic, + 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD' allow for configuration of a size + threshold to use temporary files. + Using "temporary files" rather than "memory" might take more time, but + might give the ability to zip very large files : + Tested on my win laptop with a 88Mo file : + Zip "in-memory" : 18sec (max_execution_time=30, memory_limit=180Mo) + Zip "tmporary-files" : 23sec (max_execution_time=30, memory_limit=30Mo) + - Replace use of mktime() by time() to limit the E_STRICT error messages. + - Bug correction : When adding files with full windows path (drive letter) + PclZip is now working. Before, if the drive letter is not the default + path, PclZip was not able to add the file. + + Version 2.6 : + - Code optimisation + - New attributes PCLZIP_ATT_FILE_COMMENT gives the ability to + add a comment for a specific file. (Don't really know if this is usefull) + - New attribute PCLZIP_ATT_FILE_CONTENT gives the ability to add a string + as a file. + - New attribute PCLZIP_ATT_FILE_MTIME modify the timestamp associated with + a file. + - Correct a bug. Files archived with a timestamp with 0h0m0s were extracted + with current time + - Add CRC value in the informations returned back for each file after an + action. + - Add missing closedir() statement. + - When adding a folder, and removing the path of this folder, files were + incorrectly added with a '/' at the beginning. Which means files are + related to root in unix systems. Corrected. + - Add conditional if before constant definition. This will allow users + to redefine constants without changing the file, and then improve + upgrade of pclzip code for new versions. + + Version 2.5 : + - Introduce the ability to add file/folder with individual properties (file descriptor). + This gives for example the ability to change the filename of a zipped file. + . Able to add files individually + . Able to change full name + . Able to change short name + . Compatible with global options + - New attributes : PCLZIP_ATT_FILE_NAME, PCLZIP_ATT_FILE_NEW_SHORT_NAME, PCLZIP_ATT_FILE_NEW_FULL_NAME + - New error code : PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE + - Add a security control feature. PclZip can extract any file in any folder + of a system. People may use this to upload a zip file and try to override + a system file. The PCLZIP_OPT_EXTRACT_DIR_RESTRICTION will give the + ability to forgive any directory transversal behavior. + - New PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : check extraction path + - New error code : PCLZIP_ERR_DIRECTORY_RESTRICTION + - Modification in PclZipUtilPathInclusion() : dir and path beginning with ./ will be prepend + by current path (getcwd()) + + Version 2.4 : + - Code improvment : try to speed up the code by removing unusefull call to pack() + - Correct bug in delete() : delete() should be called with no argument. This was not + the case in 2.3. This is corrected in 2.4. + - Correct a bug in path_inclusion function. When the path has several '../../', the + result was bad. + - Add a check for magic_quotes_runtime configuration. If enabled, PclZip will + disable it while working and det it back to its original value. + This resolve a lots of bad formated archive errors. + - Bug correction : PclZip now correctly unzip file in some specific situation, + when compressed content has same size as uncompressed content. + - Bug correction : When selecting option 'PCLZIP_OPT_REMOVE_ALL_PATH', + directories are not any more created. + - Code improvment : correct unclosed opendir(), better handling of . and .. in + loops. + + + Version 2.3 : + - Correct a bug with PHP5 : affecting the value 0xFE49FFE0 to a variable does not + give the same result in PHP4 and PHP5 .... + + Version 2.2 : + - Try development of PCLZIP_OPT_CRYPT ..... + However this becomes to a stop. To crypt/decrypt I need to multiply 2 long integers, + the result (greater than a long) is not supported by PHP. Even the use of bcmath + functions does not help. I did not find yet a solution ...; + - Add missing '/' at end of directory entries + - Check is a file is encrypted or not. Returns status 'unsupported_encryption' and/or + error code PCLZIP_ERR_UNSUPPORTED_ENCRYPTION. + - Corrected : Bad "version need to extract" field in local file header + - Add private method privCheckFileHeaders() in order to check local and central + file headers. PclZip is now supporting purpose bit flag bit 3. Purpose bit flag bit 3 gives + the ability to have a local file header without size, compressed size and crc filled. + - Add a generic status 'error' for file status + - Add control of compression type. PclZip only support deflate compression method. + Before v2.2, PclZip does not check the compression method used in an archive while + extracting. With v2.2 PclZip returns a new error status for a file using an unsupported + compression method. New status is "unsupported_compression". New error code is + PCLZIP_ERR_UNSUPPORTED_COMPRESSION. + - Add optional attribute PCLZIP_OPT_STOP_ON_ERROR. This will stop the extract of files + when errors like 'a folder with same name exists' or 'a newer file exists' or + 'a write protected file' exists, rather than set a status for the concerning file + and resume the extract of the zip. + - Add optional attribute PCLZIP_OPT_REPLACE_NEWER. This will force, during an extract' the + replacement of the file, even if a newer version of the file exists. + Note that today if a file with the same name already exists but is older it will be + replaced by the extracted one. + - Improve PclZipUtilOption() + - Support of zip archive with trailing bytes. Before 2.2, PclZip checks that the central + directory structure is the last data in the archive. Crypt encryption/decryption of + zip archive put trailing 0 bytes after decryption. PclZip is now supporting this. + + Version 2.1 : + - Add the ability to abort the extraction by using a user callback function. + The user can now return the value '2' in its callback which indicates to stop the + extraction. For a pre call-back extract is stopped before the extration of the current + file. For a post call back, the extraction is stopped after. + - Add the ability to extract a file (or several files) directly in the standard output. + This is done by the new parameter PCLZIP_OPT_EXTRACT_IN_OUTPUT with method extract(). + - Add support for parameters PCLZIP_OPT_COMMENT, PCLZIP_OPT_ADD_COMMENT, + PCLZIP_OPT_PREPEND_COMMENT. This will create, replace, add, or prepend comments + in the zip archive. + - When merging two archives, the comments are not any more lost, but merged, with a + blank space separator. + - Corrected bug : Files are not deleted when all files are asked to be deleted. + - Corrected bug : Folders with name '0' made PclZip to abort the create or add feature. + + + Version 2.0 : + ***** Warning : Some new features may break the backward compatibility for your scripts. + Please carefully read the readme file. + - Add the ability to delete by Index, name and regular expression. This feature is + performed by the method delete(), which uses the optional parameters + PCLZIP_OPT_BY_INDEX, PCLZIP_OPT_BY_NAME, PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG. + - Add the ability to extract by regular expression. To extract by regexp you must use the method + extract(), with the option PCLZIP_OPT_BY_EREG or PCLZIP_OPT_BY_PREG + (depending if you want to use ereg() or preg_match() syntax) followed by the + regular expression pattern. + - Add the ability to extract by index, directly with the extract() method. This is a + code improvment of the extractByIndex() method. + - Add the ability to extract by name. To extract by name you must use the method + extract(), with the option PCLZIP_OPT_BY_NAME followed by the filename to + extract or an array of filenames to extract. To extract all a folder, use the folder + name rather than the filename with a '/' at the end. + - Add the ability to add files without compression. This is done with a new attribute + which is PCLZIP_OPT_NO_COMPRESSION. + - Add the attribute PCLZIP_OPT_EXTRACT_AS_STRING, which allow to extract a file directly + in a string without using any file (or temporary file). + - Add constant PCLZIP_SEPARATOR for static configuration of filename separators in a single string. + The default separator is now a comma (,) and not any more a blank space. + THIS BREAK THE BACKWARD COMPATIBILITY : Please check if this may have an impact with + your script. + - Improve algorythm performance by removing the use of temporary files when adding or + extracting files in an archive. + - Add (correct) detection of empty filename zipping. This can occurs when the removed + path is the same + as a zipped dir. The dir is not zipped (['status'] = filtered), only its content. + - Add better support for windows paths (thanks for help from manus@manusfreedom.com). + - Corrected bug : When the archive file already exists with size=0, the add() method + fails. Corrected in 2.0. + - Remove the use of OS_WINDOWS constant. Use php_uname() function rather. + - Control the order of index ranges in extract by index feature. + - Change the internal management of folders (better handling of internal flag). + + + Version 1.3 : + - Removing the double include check. This is now done by include_once() and require_once() + PHP directives. + - Changing the error handling mecanism : Remove the use of an external error library. + The former PclError...() functions are replaced by internal equivalent methods. + By changing the environment variable PCLZIP_ERROR_EXTERNAL you can still use the former library. + Introducing the use of constants for error codes rather than integer values. This will help + in futur improvment. + Introduction of error handling functions like errorCode(), errorName() and errorInfo(). + - Remove the deprecated use of calling function with arguments passed by reference. + - Add the calling of extract(), extractByIndex(), create() and add() functions + with variable options rather than fixed arguments. + - Add the ability to remove all the file path while extracting or adding, + without any need to specify the path to remove. + This is available for extract(), extractByIndex(), create() and add() functionS by using + the new variable options parameters : + - PCLZIP_OPT_REMOVE_ALL_PATH : by indicating this option while calling the fct. + - Ability to change the mode of a file after the extraction (chmod()). + This is available for extract() and extractByIndex() functionS by using + the new variable options parameters. + - PCLZIP_OPT_SET_CHMOD : by setting the value of this option. + - Ability to definition call-back options. These call-back will be called during the adding, + or the extracting of file (extract(), extractByIndex(), create() and add() functions) : + - PCLZIP_CB_PRE_EXTRACT : will be called before each extraction of a file. The user + can trigerred the change the filename of the extracted file. The user can triggered the + skip of the extraction. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_EXTRACT : will be called after each extraction of a file. + Nothing can be triggered from that point. + - PCLZIP_CB_PRE_ADD : will be called before each add of a file. The user + can trigerred the change the stored filename of the added file. The user can triggered the + skip of the add. This is adding a 'skipped' status in the file list result value. + - PCLZIP_CB_POST_ADD : will be called after each add of a file. + Nothing can be triggered from that point. + - Two status are added in the file list returned as function result : skipped & filename_too_long + 'skipped' is used when a call-back function ask for skipping the file. + 'filename_too_long' is used while adding a file with a too long filename to archive (the file is + not added) + - Adding the function PclZipUtilPathInclusion(), that check the inclusion of a path into + a directory. + - Add a check of the presence of the archive file before some actions (like list, ...) + - Add the initialisation of field "index" in header array. This means that by + default index will be -1 when not explicitly set by the methods. + + Version 1.2 : + - Adding a duplicate function. + - Adding a merge function. The merge function is a "quick merge" function, + it just append the content of an archive at the end of the first one. There + is no check for duplicate files or more recent files. + - Improve the search of the central directory end. + + Version 1.1.2 : + + - Changing the license of PclZip. PclZip is now released under the GNU / LGPL license + (see License section). + - Adding the optional support of a static temporary directory. You will need to configure + the constant PCLZIP_TEMPORARY_DIR if you want to use this feature. + - Improving the rename() function. In some cases rename() does not work (different + Filesystems), so it will be replaced by a copy() + unlink() functions. + + Version 1.1.1 : + + - Maintenance release, no new feature. + + Version 1.1 : + + - New method Add() : adding files in the archive + - New method ExtractByIndex() : partial extract of the archive, files are identified by + their index in the archive + - New method DeleteByIndex() : delete some files/folder entries from the archive, + files are identified by their index in the archive. + - Adding a test of the zlib extension presence. If not present abort the script. + + Version 1.0.1 : + + - No new feature + + +3 - Corrected bugs +================== + + Corrected in Version 2.0 : + - Corrected : During an extraction, if a call-back fucntion is used and try to skip + a file, all the extraction process is stopped. + + Corrected in Version 1.3 : + - Corrected : Support of static synopsis for method extract() is broken. + - Corrected : invalid size of archive content field (0xFF) should be (0xFFFF). + - Corrected : When an extract is done with a remove_path parameter, the entry for + the directory with exactly the same path is not skipped/filtered. + - Corrected : extractByIndex() and deleteByIndex() were not managing index in the + right way. For example indexes '1,3-5,11' will only extract files 1 and 11. This + is due to a sort of the index resulting table that puts 11 before 3-5 (sort on + string and not interger). The sort is temporarilly removed, this means that + you must provide a sorted list of index ranges. + + Corrected in Version 1.2 : + + - Nothing. + + Corrected in Version 1.1.2 : + + - Corrected : Winzip is unable to delete or add new files in a PclZip created archives. + + Corrected in Version 1.1.1 : + + - Corrected : When archived file is not compressed (0% compression), the + extract method fails. + + Corrected in Version 1.1 : + + - Corrected : Adding a complete tree of folder may result in a bad archive + creation. + + Corrected in Version 1.0.1 : + + - Corrected : Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + + +4 - Known bugs or limitations +============================= + + Please publish bugs reports in SourceForge : + http://sourceforge.net/tracker/?group_id=40254&atid=427564 + + In Version 2.x : + - PclZip does only support file uncompressed or compressed with deflate (compression method 8) + - PclZip does not support password protected zip archive + - Some concern were seen when changing mtime of a file while archiving. + Seems to be linked to Daylight Saving Time (PclTest_changing_mtime). + + In Version 1.2 : + + - merge() methods does not check for duplicate files or last date of modifications. + + In Version 1.1 : + + - Limitation : Using 'extract' fields in the file header in the zip archive is not supported. + - WinZip is unable to delete a single file in a PclZip created archive. It is also unable to + add a file in a PclZip created archive. (Corrected in v.1.2) + + In Version 1.0.1 : + + - Adding a complete tree of folder may result in a bad archive + creation. (Corrected in V.1.1). + - Path given to methods must be in the unix format (/) and not the Windows format (\). + Workaround : Use only / directory separators. + - PclZip is using temporary files that are sometime the name of the file with a .tmp or .gz + added suffix. Files with these names may already exist and may be overwritten. + Workaround : none. + - PclZip does not check if the zlib extension is present. If it is absent, the zip + file is not created and the lib abort without warning. + Workaround : enable the zlib extension on the php install + + In Version 1.0 : + + - Error while compressing files greater than PCLZIP_READ_BLOCK_SIZE (default=1024). + (Corrected in v.1.0.1) + - Limitation : Multi-disk zip archive are not supported. + + +5 - License +=========== + + Since version 1.1.2, PclZip Library is released under GNU/LGPL license. + This library is free, so you can use it at no cost. + + HOWEVER, if you release a script, an application, a library or any kind of + code using PclZip library (or a part of it), YOU MUST : + - Indicate in the documentation (or a readme file), that your work + uses PclZip Library, and make a reference to the author and the web site + http://www.phpconcept.net + - Gives the ability to the final user to update the PclZip libary. + + I will also appreciate that you send me a mail (vincent@phpconcept.net), just to + be aware that someone is using PclZip. + + For more information about GNU/LGPL license : http://www.gnu.org + +6 - Warning +================= + + This library and the associated files are non commercial, non professional work. + It should not have unexpected results. However if any damage is caused by this software + the author can not be responsible. + The use of this software is at the risk of the user. + +7 - Documentation +================= + PclZip User Manuel is available in English on PhpConcept : http://www.phpconcept.net/pclzip/man/en/index.php + A Russian translation was done by Feskov Kuzma : http://php.russofile.ru/ru/authors/unsort/zip/ + +8 - Author +========== + + This software was written by Vincent Blavet (vincent@phpconcept.net) on its leasure time. + +9 - Contribute +============== + If you want to contribute to the development of PclZip, please contact vincent@phpconcept.net. + If you can help in financing PhpConcept hosting service, please go to + http://www.phpconcept.net/soutien.php diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php deleted file mode 100644 index 46701a45..00000000 --- a/htdocs/mailmanspip/class/mailmanspip.class.php +++ /dev/null @@ -1,418 +0,0 @@ - - * Copyright (C) 2002-2003 Jean-Louis Bergamo - * Copyright (C) 2004-2013 Laurent Destailleur - * Copyright (C) 2004 Sebastien Di Cintio - * Copyright (C) 2004 Benoit Mortier - * Copyright (C) 2009 Regis Houssin - * Copyright (C) 2012 Marcos García - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/mailmanspip/class/mailmanspip.class.php - * \ingroup member - * \brief File of class to manage mailman and spip actions - */ - -require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; -require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; - - -/** - * Class to manage mailman and spip - */ -class MailmanSpip -{ - /** - * @var DoliDB Database handler. - */ - public $db; - - /** - * @var string Error code (or message) - */ - public $error = ''; - - /** - * @var string[] Array of error strings - */ - public $errors = array(); - - public $mladded_ok; - public $mladded_ko; - public $mlremoved_ok; - public $mlremoved_ko; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - /** - * Function used to check if SPIP is enabled on the system - * - * @return boolean - */ - public function isSpipEnabled() - { - if (getDolGlobalInt("ADHERENT_USE_SPIP") == 1) { - return true; - } - - return false; - } - - /** - * Function used to check if the SPIP config is correct - * - * @return boolean - */ - public function checkSpipConfig() - { - if (getDolGlobalString('ADHERENT_SPIP_SERVEUR') != '' && getDolGlobalString('ADHERENT_SPIP_USER') != '' && getDolGlobalString('ADHERENT_SPIP_PASS') != '' && getDolGlobalString('ADHERENT_SPIP_DB') != '') { - return true; - } - - return false; - } - - /** - * Function used to connect to SPIP - * - * @return boolean|DoliDB Boolean of DoliDB - */ - public function connectSpip() - { - $resource = getDoliDBInstance('mysql', ADHERENT_SPIP_SERVEUR, ADHERENT_SPIP_USER, ADHERENT_SPIP_PASS, ADHERENT_SPIP_DB, ADHERENT_SPIP_PORT); - - if ($resource->ok) { - return $resource; - } - - dol_syslog('Error when connecting to SPIP '.ADHERENT_SPIP_SERVEUR.' '.ADHERENT_SPIP_USER.' '.ADHERENT_SPIP_PASS.' '.ADHERENT_SPIP_DB, LOG_ERR); - - return false; - } - - /** - * Function used to connect to Mailman - * - * @param Adherent $object Object with the data - * @param string $url Mailman URL to be called with patterns - * @param string $list Name of mailing-list - * @return mixed Boolean or string - */ - private function callMailman($object, $url, $list) - { - global $conf; - - //Patterns that are going to be replaced with their original value - $patterns = array( - '%LISTE%', - '%EMAIL%', - '%PASSWORD%', - '%MAILMAN_ADMINPW%' - ); - $replace = array( - $list, - $object->email, - $object->pass, - $conf->global->ADHERENT_MAILMAN_ADMIN_PASSWORD - ); - - $curl_url = str_replace($patterns, $replace, $url); - dol_syslog('Calling Mailman: '.$curl_url); - - $result = getURLContent($curl_url); - - return $result['content']; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Fonction qui donne les droits redacteurs dans spip - * - * @param Adherent $object Object with data (->firstname, ->lastname, ->email and ->login) - * @return int =0 if KO, >0 if OK - */ - public function add_to_spip($object) - { - // phpcs:enable - dol_syslog(get_class($this)."::add_to_spip"); - - if ($this->isSpipEnabled()) { - if ($this->checkSpipConfig()) { - $mydb = $this->connectSpip(); - - if ($mydb) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $mdpass = dol_hash($object->pass); - $htpass = crypt($object->pass, makesalt()); - $query = "INSERT INTO spip_auteurs (nom, email, login, pass, htpass, alea_futur, statut) VALUES(\"".dolGetFirstLastname($object->firstname, $object->lastname)."\",\"".$object->email."\",\"".$object->login."\",\"$mdpass\",\"$htpass\",FLOOR(32000*RAND()),\"1comite\")"; - - $result = $mydb->query($query); - - $mydb->close(); - - if ($result) { - return 1; - } else { - $this->error = $mydb->lasterror(); - } - } else { - $this->error = 'Failed to connect to SPIP'; - } - } else { - $this->error = 'BadSPIPConfiguration'; - } - } else { - $this->error = 'SPIPNotEnabled'; - } - - return 0; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Fonction qui enleve les droits redacteurs dans spip - * - * @param Adherent $object Object with data (->login) - * @return int =0 if KO, >0 if OK - */ - public function del_to_spip($object) - { - // phpcs:enable - dol_syslog(get_class($this)."::del_to_spip"); - - if ($this->isSpipEnabled()) { - if ($this->checkSpipConfig()) { - $mydb = $this->connectSpip(); - - if ($mydb) { - $query = "DELETE FROM spip_auteurs WHERE login = '".$mydb->escape($object->login)."'"; - - $result = $mydb->query($query); - - $mydb->close(); - - if ($result) { - return 1; - } else { - $this->error = $mydb->lasterror(); - } - } else { - $this->error = 'Failed to connect to SPIP'; - } - } else { - $this->error = 'BadSPIPConfiguration'; - } - } else { - $this->error = 'SPIPNotEnabled'; - } - - return 0; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Fonction qui dit si cet utilisateur est un redacteur existant dans spip - * - * @param object $object Object with data (->login) - * @return int 1=exists, 0=does not exists, -1=error - */ - public function is_in_spip($object) - { - // phpcs:enable - if ($this->isSpipEnabled()) { - if ($this->checkSpipConfig()) { - $mydb = $this->connectSpip(); - - if ($mydb) { - $query = "SELECT login FROM spip_auteurs WHERE login = '".$mydb->escape($object->login)."'"; - - $result = $mydb->query($query); - - if ($result) { - if ($mydb->num_rows($result)) { - // nous avons au moins une reponse - $mydb->close(); - return 1; - } else { - // nous n'avons pas de reponse => n'existe pas - $mydb->close(); - return 0; - } - } else { - $this->error = $mydb->lasterror(); - $mydb->close(); - } - } else { - $this->error = 'Failed to connect to SPIP'; - } - } else { - $this->error = 'BadSPIPConfiguration'; - } - } else { - $this->error = 'SPIPNotEnabled'; - } - - return -1; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Subscribe an email to all mailing-lists - * - * @param Adherent $object Object with data (->email, ->pass, ->element, ->type) - * @param array $listes To force mailing-list (string separated with ,) - * @return int <0 if KO, >=0 if OK - */ - public function add_to_mailman($object, $listes = '') - { - // phpcs:enable - global $conf, $langs, $user; - - dol_syslog(get_class($this)."::add_to_mailman"); - - $this->mladded_ok = array(); - $this->mladded_ko = array(); - - if (!function_exists("curl_init")) { - $langs->load("errors"); - $this->error = $langs->trans("ErrorFunctionNotAvailableInPHP", "curl_init"); - return -1; - } - - if ($conf->adherent->enabled) { // Synchro for members - if (!empty($conf->global->ADHERENT_MAILMAN_URL)) { - if ($listes == '' && !empty($conf->global->ADHERENT_MAILMAN_LISTS)) { - $lists = explode(',', $conf->global->ADHERENT_MAILMAN_LISTS); - } else { - $lists = explode(',', $listes); - } - - $categstatic = new Categorie($this->db); - - foreach ($lists as $list) { - // Filter on type something (ADHERENT_MAILMAN_LISTS = "mailinglist0,TYPE:typevalue:mailinglist1,CATEG:categvalue:mailinglist2") - $tmp = explode(':', $list); - if (!empty($tmp[2])) { - $list = $tmp[2]; - if ($object->element == 'member' && $tmp[0] == 'TYPE' && $object->type != $tmp[1]) { // Filter on member type label - dol_syslog("We ignore list ".$list." because object member type ".$object->type." does not match ".$tmp[1], LOG_DEBUG); - continue; - } - if ($object->element == 'member' && $tmp[0] == 'CATEG' && !in_array($tmp[1], $categstatic->containing($object->id, 'member', 'label'))) { // Filter on member category - dol_syslog("We ignore list ".$list." because object member is not into category ".$tmp[1], LOG_DEBUG); - continue; - } - } - - //We call Mailman to subscribe the user - $result = $this->callMailman($object, $conf->global->ADHERENT_MAILMAN_URL, $list); - - if ($result === false) { - $this->mladded_ko[$list] = $object->email; - return -2; - } else { - $this->mladded_ok[$list] = $object->email; - } - } - return count($lists); - } else { - $this->error = "ADHERENT_MAILMAN_URL not defined"; - return -1; - } - } - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Unsubscribe an email from all mailing-lists - * Used when a user is resiliated - * - * @param Adherent $object Object with data (->email, ->pass, ->element, ->type) - * @param array $listes To force mailing-list (string separated with ,) - * @return int <0 if KO, >=0 if OK - */ - public function del_to_mailman($object, $listes = '') - { - // phpcs:enable - global $conf, $langs, $user; - - dol_syslog(get_class($this)."::del_to_mailman"); - - $this->mlremoved_ok = array(); - $this->mlremoved_ko = array(); - - if (!function_exists("curl_init")) { - $langs->load("errors"); - $this->error = $langs->trans("ErrorFunctionNotAvailableInPHP", "curl_init"); - return -1; - } - - if ($conf->adherent->enabled) { // Synchro for members - if (!empty($conf->global->ADHERENT_MAILMAN_UNSUB_URL)) { - if ($listes == '' && !empty($conf->global->ADHERENT_MAILMAN_LISTS)) { - $lists = explode(',', $conf->global->ADHERENT_MAILMAN_LISTS); - } else { - $lists = explode(',', $listes); - } - - $categstatic = new Categorie($this->db); - - foreach ($lists as $list) { - // Filter on type something (ADHERENT_MAILMAN_LISTS = "mailinglist0,TYPE:typevalue:mailinglist1,CATEG:categvalue:mailinglist2") - $tmp = explode(':', $list); - if (!empty($tmp[2])) { - $list = $tmp[2]; - if ($object->element == 'member' && $tmp[0] == 'TYPE' && $object->type != $tmp[1]) { // Filter on member type label - dol_syslog("We ignore list ".$list." because object member type ".$object->type." does not match ".$tmp[1], LOG_DEBUG); - continue; - } - if ($object->element == 'member' && $tmp[0] == 'CATEG' && !in_array($tmp[1], $categstatic->containing($object->id, 'member', 'label'))) { // Filter on member category - dol_syslog("We ignore list ".$list." because object member is not into category ".$tmp[1], LOG_DEBUG); - continue; - } - } - - //We call Mailman to unsubscribe the user - $result = $this->callMailman($object, $conf->global->ADHERENT_MAILMAN_UNSUB_URL, $list); - - if ($result === false) { - $this->mlremoved_ko[$list] = $object->email; - return -2; - } else { - $this->mlremoved_ok[$list] = $object->email; - } - } - return count($lists); - } else { - $this->error = "ADHERENT_MAILMAN_UNSUB_URL not defined"; - return -1; - } - } - } -} diff --git a/htdocs/modulebuilder/README.md b/htdocs/modulebuilder/README.md deleted file mode 100644 index 26b0ecf7..00000000 --- a/htdocs/modulebuilder/README.md +++ /dev/null @@ -1,17 +0,0 @@ -Module Builder -============== - -This is a module to provide embedded tools to develop your own application/features inside Dolibarr ERP CRM software. -It provide tools for module developers to kickstart their project and give an hands-on sample of which features Dolibarr -has to offer for module development. - -If you don't need to develop your own module/application, you just don't need this. - -After enabling this module, you should find features to generate or edit modules/application from menu *Home - Tools - Module builder* - -Documentation -------------- - -[Module tutorial](https://wiki.dolibarr.org/index.php/Module_development) - -[Dolibarr development](https://wiki.dolibarr.org/index.php/Developer_documentation) diff --git a/htdocs/modulebuilder/admin/setup.php b/htdocs/modulebuilder/admin/setup.php deleted file mode 100644 index 4c7e597e..00000000 --- a/htdocs/modulebuilder/admin/setup.php +++ /dev/null @@ -1,211 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/admin/setup.php - * \ingroup modulebuilder - * \brief Page setup for modulebuilder module - */ -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; - -global $conf, $langs, $user, $db; -$langs->loadLangs(array("admin", "other", "modulebuilder")); - -if (!$user->admin || !isModEnabled('modulebuilder')) { - accessforbidden(); -} - -$action = GETPOST('action', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - - -/* - * Actions - */ - -if ($action == "update") { - $res1 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_README', GETPOST('MODULEBUILDER_SPECIFIC_README', 'restricthtml'), 'chaine', 0, '', $conf->entity); - $res2 = dolibarr_set_const($db, 'MODULEBUILDER_ASCIIDOCTOR', GETPOST('MODULEBUILDER_ASCIIDOCTOR', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res3 = dolibarr_set_const($db, 'MODULEBUILDER_ASCIIDOCTORPDF', GETPOST('MODULEBUILDER_ASCIIDOCTORPDF', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res4 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_EDITOR_NAME', GETPOST('MODULEBUILDER_SPECIFIC_EDITOR_NAME', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res5 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_EDITOR_URL', GETPOST('MODULEBUILDER_SPECIFIC_EDITOR_URL', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res6 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_FAMILY', GETPOST('MODULEBUILDER_SPECIFIC_FAMILY', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res7 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_AUTHOR', GETPOST('MODULEBUILDER_SPECIFIC_AUTHOR', 'html'), 'chaine', 0, '', $conf->entity); - $res8 = dolibarr_set_const($db, 'MODULEBUILDER_SPECIFIC_VERSION', GETPOST('MODULEBUILDER_SPECIFIC_VERSION', 'alphanohtml'), 'chaine', 0, '', $conf->entity); - if ($res1 < 0 || $res2 < 0 || $res3 < 0 || $res4 < 0 || $res5 < 0 || $res6 < 0 || $res7 < 0 || $res8 < 0) { - setEventMessages('ErrorFailedToSaveDate', null, 'errors'); - $db->rollback(); - } else { - setEventMessages('RecordModifiedSuccessfully', null, 'mesgs'); - $db->commit(); - } -} - -$reg = array(); -if (preg_match('/set_(.*)/', $action, $reg)) { - $code = $reg[1]; - $values = GETPOST($code); - if (is_array($values)) { - $values = implode(',', $values); - } - - if (dolibarr_set_const($db, $code, $values, 'chaine', 0, '', $conf->entity) > 0) { - header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } else { - dol_print_error($db); - } -} - -if (preg_match('/del_(.*)/', $action, $reg)) { - $code = $reg[1]; - if (dolibarr_del_const($db, $code, 0) > 0) { - Header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } else { - dol_print_error($db); - } -} - - -/* - * View - */ - -$form = new Form($db); - -$help_url = ''; -llxHeader('', $langs->trans("ModulebuilderSetup"), $help_url); - -$linkback = ''.$langs->trans("BackToModuleList").''; - -print ''; -print ''; -print ''; - -print load_fiche_titre($langs->trans("ModuleSetup").' '.$langs->trans('Modulebuilder'), $linkback); - -if (GETPOST('withtab', 'alpha')) { - print dol_get_fiche_head($head, 'modulebuilder', '', -1); -} - -print ''.$langs->trans("ModuleBuilderDesc")."
    \n"; - -print '
    '; - -print '
    '; - - print ''; - // Picto + Ref - print '
    '; - print $facturestatic->getNomUrl(1, '', 0, 0, '', 0, -1, 1); - - $filename = dol_sanitizeFileName($obj->ref); - $filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($obj->facid, 2, 0, 0, $facturestatic, 'invoice_supplier').dol_sanitizeFileName($obj->ref); - $subdir = get_exdir($obj->facid, 2, 0, 0, $facturestatic, 'invoice_supplier').dol_sanitizeFileName($obj->ref); - print $formfile->getDocumentsLink('facture_fournisseur', $subdir, $filedir); - print '
    '; - - print "
    '; + + // print ''; + // // Picto + Ref + // print '
    '; + // print $facturestatic->getNomUrl(1, '', 0, 0, '', 0, -1, 1); + + // //$filename = dol_sanitizeFileName($obj->ref); + // //$filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($obj->facid, 2, 0, 0, $facturestatic, 'invoice_supplier').dol_sanitizeFileName($obj->ref); + // //$subdir = get_exdir($obj->facid, 2, 0, 0, $facturestatic, 'invoice_supplier').dol_sanitizeFileName($obj->ref); + // //print $formfile->getDocumentsLink('facture_fournisseur', $subdir, $filedir); + // print '
    '; + + // print "
    '; - print $obj->ref_supplier; + print $facturestatic->getNomUrl(1, '', 0, 0, '', 1, -1, 1); + // print $obj->ref_supplier; print '
    '; - -print ''; -print ''; -print ''; -print "\n"; - - -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - // What is use case of this 2 options ? - - print ''; - print ''; - print ''; -} - -print ''; -print ''; -print ''; -print ''; - -print ''; -print ''; -print ''; -print ''; - -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - print ''; - print ''; - print ''; - print ''; - - print ''; - print ''; - print ''; - print ''; - - print ''; - print ''; - print ''; - print ''; -} - -print ''; -print ''; -print ''; -print ''; - -print ''; -print ''; -print ''; -print ''; - -print ''; -print ''; -print ''; -print ''; - -print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '.$langs->trans("UseAboutPage").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('MODULEBUILDER_USE_ABOUT'); - } else { - if (empty($conf->global->MODULEBUILDER_USE_ABOUT)) { - print ''.img_picto($langs->trans("Disabled"), 'off').''; - } else { - print ''.img_picto($langs->trans("Enabled"), 'on').''; - } - } - print '
    '.$langs->trans("UseSpecificEditorName").''; -print ''; -print '
    '.$langs->trans("UseSpecificEditorURL").''; -print ''; -print '
    '.$langs->trans("UseSpecificFamily").''; - print ''; - print '
    '.$langs->trans("UseSpecificAuthor").''; - print ''; - print '
    '.$langs->trans("UseSpecificVersion").''; - print ''; - print '
    '.$langs->trans("UseSpecificReadme").''; -print ''; -print '
    '.$langs->trans("AsciiToHtmlConverter").''; -print ''; -print ' '.$langs->trans("Example").': asciidoc, asciidoctor'; -print '
    '.$langs->trans("AsciiToPdfConverter").''; -print ''; -print ' '.$langs->trans("Example").': asciidoctor-pdf'; -print '
    '; - -print $form->buttonsSaveCancel("Save", ''); - -if (GETPOST('withtab', 'alpha')) { - print dol_get_fiche_end(); -} - -print '
    '; - -print ''; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php deleted file mode 100644 index f871d916..00000000 --- a/htdocs/modulebuilder/index.php +++ /dev/null @@ -1,4682 +0,0 @@ - - * Copyright (C) 2018-2019 Nicolas ZABOURI - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * You can also make a direct call the page with parameter like this: - * htdocs/modulebuilder/index.php?module=Inventory@/pathtodolibarr/htdocs/product - */ - -/** - * \file htdocs/modulebuilder/index.php - * \brief Home page for module builder module - * - * You can add parameter dirins=/home/ldestailleur/git/dolibarr/htdocs/mymodule to force generation of module - * into the dirins directory. - */ - -if (!defined('NOSCANPOSTFORINJECTION')) { - define('NOSCANPOSTFORINJECTION', '1'); // Do not check anti SQL+XSS injection attack test -} - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/modulebuilder.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/utils.class.php'; - -// Load translation files required by the page -$langs->loadLangs(array("admin", "modulebuilder", "other", "cron", "errors")); - -// GET Parameters -$action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm', 'alpha'); -$cancel = GETPOST('cancel', 'alpha'); - -$sortfield = GETPOST('sortfield', 'alpha'); -$sortorder = GETPOST('sortorder', 'alpha'); - -$module = GETPOST('module', 'alpha'); -$tab = GETPOST('tab', 'aZ09'); -$tabobj = GETPOST('tabobj', 'alpha'); -$tabdic = GETPOST('tabdic', 'alpha'); -$propertykey = GETPOST('propertykey', 'alpha'); -if (empty($module)) { - $module = 'initmodule'; -} -if (empty($tab)) { - $tab = 'description'; -} -if (empty($tabobj)) { - $tabobj = 'newobjectifnoobj'; -} -if (empty($tabdic)) { - $tabdic = 'newdicifnodic'; -} -$file = GETPOST('file', 'alpha'); - -$modulename = dol_sanitizeFileName(GETPOST('modulename', 'alpha')); -$objectname = dol_sanitizeFileName(GETPOST('objectname', 'alpha')); -$dicname = dol_sanitizeFileName(GETPOST('dicname', 'alpha')); -$editorname= GETPOST('editorname', 'alpha'); -$editorurl= GETPOST('editorurl', 'alpha'); -$version= GETPOST('version', 'alpha'); -$family= GETPOST('family', 'alpha'); -$picto= GETPOST('idpicto', 'alpha'); -$idmodule= GETPOST('idmodule', 'alpha'); - -// Security check -if (!isModEnabled('modulebuilder')) { - accessforbidden('Module ModuleBuilder not enabled'); -} -if (!$user->hasRight("modulebuilder", "run")) { - accessforbidden('ModuleBuilderNotAllowed'); -} - - -// Dir for custom dirs -$tmp = explode(',', $dolibarr_main_document_root_alt); -$dirins = $tmp[0]; -$dirread = $dirins; -$forceddirread = 0; - -$tmpdir = explode('@', $module); -if (!empty($tmpdir[1])) { - $module = $tmpdir[0]; - $dirread = $tmpdir[1]; - $forceddirread = 1; -} -if (GETPOST('dirins', 'alpha')) { - $dirread = $dirins = GETPOST('dirins', 'alpha'); - $forceddirread = 1; -} - -$FILEFLAG = 'modulebuilder.txt'; - -$now = dol_now(); -$newmask = 0; -if (empty($newmask) && !empty($conf->global->MAIN_UMASK)) { - $newmask = $conf->global->MAIN_UMASK; -} -if (empty($newmask)) { // This should no happen - $newmask = '0664'; -} - -$result = restrictedArea($user, 'modulebuilder', null); - -$error = 0; - -$form = new Form($db); - -// Define $listofmodules -$dirsrootforscan = array($dirread); - -// Add also the core modules into the list of modules to show/edit -if ($dirread != DOL_DOCUMENT_ROOT && ($conf->global->MAIN_FEATURES_LEVEL >= 2 || !empty($conf->global->MODULEBUILDER_ADD_DOCUMENT_ROOT))) { - $dirsrootforscan[] = DOL_DOCUMENT_ROOT; -} - -// Search modules to edit -$textforlistofdirs = ''."\n"; -$listofmodules = array(); -$i = 0; -foreach ($dirsrootforscan as $dirread) { - $moduletype = 'external'; - if ($dirread == DOL_DOCUMENT_ROOT) { - $moduletype = 'internal'; - } - - $dirsincustom = dol_dir_list($dirread, 'directories'); - if (is_array($dirsincustom) && count($dirsincustom) > 0) { - foreach ($dirsincustom as $dircustomcursor) { - $fullname = $dircustomcursor['fullname']; - if (dol_is_file($fullname.'/'.$FILEFLAG)) { - // Get real name of module (MyModule instead of mymodule) - $dirtoscanrel = basename($fullname).'/core/modules/'; - - $descriptorfiles = dol_dir_list(dirname($fullname).'/'.$dirtoscanrel, 'files', 0, 'mod.*\.class\.php$'); - if (empty($descriptorfiles)) { // If descriptor not found into module dir, we look into main module dir. - $dirtoscanrel = 'core/modules/'; - $descriptorfiles = dol_dir_list($fullname.'/../'.$dirtoscanrel, 'files', 0, 'mod'.strtoupper(basename($fullname)).'\.class\.php$'); - } - $modulenamewithcase = ''; - $moduledescriptorrelpath = ''; - $moduledescriptorfullpath = ''; - - foreach ($descriptorfiles as $descriptorcursor) { - $modulenamewithcase = preg_replace('/^mod/', '', $descriptorcursor['name']); - $modulenamewithcase = preg_replace('/\.class\.php$/', '', $modulenamewithcase); - $moduledescriptorrelpath = $dirtoscanrel.$descriptorcursor['name']; - $moduledescriptorfullpath = $descriptorcursor['fullname']; - //var_dump($descriptorcursor); - } - if ($modulenamewithcase) { - $listofmodules[$dircustomcursor['name']] = array( - 'modulenamewithcase'=>$modulenamewithcase, - 'moduledescriptorrelpath'=> $moduledescriptorrelpath, - 'moduledescriptorfullpath'=>$moduledescriptorfullpath, - 'moduledescriptorrootpath'=>$dirread, - 'moduletype'=>$moduletype - ); - } - //var_dump($listofmodules); - } - } - } - - if ($forceddirread && empty($listofmodules)) { // $forceddirread is 1 if we forced dir to read with dirins=... or with module=...@mydir - $listofmodules[strtolower($module)] = array( - 'modulenamewithcase'=>$module, - 'moduledescriptorrelpath'=> 'notyetimplemented', - 'moduledescriptorfullpath'=> 'notyetimplemented', - 'moduledescriptorrootpath'=> 'notyetimplemented', - ); - } - - // Show description of content - $newdircustom = $dirins; - if (empty($newdircustom)) { - $newdircustom = img_warning(); - } - // If dirread was forced to somewhere else, by using URL - // htdocs/modulebuilder/index.php?module=Inventory@/home/ldestailleur/git/dolibarr/htdocs/product - if (empty($i)) { - $textforlistofdirs .= $langs->trans("DirScanned").' : '; - } else { - $textforlistofdirs .= ', '; - } - $textforlistofdirs .= ''.$dirread.''; - if ($dirread == DOL_DOCUMENT_ROOT) { - if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { - $textforlistofdirs .= $form->textwithpicto('', $langs->trans("ConstantIsOn", "MAIN_FEATURES_LEVEL")); - } - if (getDolGlobalString('MODULEBUILDER_ADD_DOCUMENT_ROOT')) { - $textforlistofdirs .= $form->textwithpicto('', $langs->trans("ConstantIsOn", "MODULEBUILDER_ADD_DOCUMENT_ROOT")); - } - } - $i++; -} - - -/* - * Actions - */ - -if ($dirins && $action == 'initmodule' && $modulename) { - $modulename = ucfirst($modulename); // Force first letter in uppercase - - if (preg_match('/[^a-z0-9_]/i', $modulename)) { - $error++; - setEventMessages($langs->trans("SpaceOrSpecialCharAreNotAllowed"), null, 'errors'); - } - - if (!$error) { - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $destdir = $dirins.'/'.strtolower($modulename); - - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename - ); - - $result = dolCopyDir($srcdir, $destdir, 0, 0, $arrayreplacement); - //dol_mkdir($destfile); - if ($result <= 0) { - if ($result < 0) { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyDir", $srcdir, $destdir), null, 'errors'); - } else { - // $result == 0 - setEventMessages($langs->trans("AllFilesDidAlreadyExist", $srcdir, $destdir), null, 'warnings'); - } - } - - // Copy last html.formsetup.class.php' to backport folder - $tryToCopyFromSetupClass = true; - $backportDest = $destdir .'/backport/v16/core/class'; - $backportFileSrc = DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php'; - $backportFileDest = $backportDest.'/html.formsetup.class.php'; - $result = dol_mkdir($backportDest); - - if ($result < 0) { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCreateDir", $backportDest), null, 'errors'); - $tryToCopyFromSetupClass = false; - } - - if ($tryToCopyFromSetupClass) { - $result = dol_copy($backportFileSrc, $backportFileDest); - if ($result <= 0) { - if ($result < 0) { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyFile", $backportFileSrc, $backportFileDest), null, 'errors'); - } else { - setEventMessages($langs->trans("FileDidAlreadyExist", $backportFileDest), null, 'warnings'); - } - } - } - - if (!empty($conf->global->MODULEBUILDER_USE_ABOUT)) { - dol_delete_file($destdir.'/admin/about.php'); - } - - // Delete dir and files that can be generated in sub tabs later if we need them (we want a minimal module first) - dol_delete_dir_recursive($destdir.'/build/doxygen'); - dol_delete_dir_recursive($destdir.'/core/modules/mailings'); - dol_delete_dir_recursive($destdir.'/core/modules/'.strtolower($modulename).''); - dol_delete_dir_recursive($destdir.'/core/tpl'); - dol_delete_dir_recursive($destdir.'/core/triggers'); - dol_delete_dir_recursive($destdir.'/doc'); - //dol_delete_dir_recursive($destdir.'/.tx'); - dol_delete_dir_recursive($destdir.'/core/boxes'); - - dol_delete_file($destdir.'/admin/myobject_extrafields.php'); - - dol_delete_file($destdir.'/sql/data.sql'); - dol_delete_file($destdir.'/sql/update_x.x.x-y.y.y.sql'); - - dol_delete_file($destdir.'/class/actions_'.strtolower($modulename).'.class.php'); - dol_delete_file($destdir.'/class/api_'.strtolower($modulename).'.class.php'); - - dol_delete_file($destdir.'/css/'.strtolower($modulename).'.css.php'); - - dol_delete_file($destdir.'/js/'.strtolower($modulename).'.js.php'); - - dol_delete_file($destdir.'/scripts/'.strtolower($modulename).'.php'); - - dol_delete_file($destdir.'/test/phpunit/'.$modulename.'FunctionnalTest.php'); - - // Delete some files related to Object (because the previous dolCopyDir has copied everything) - dol_delete_file($destdir.'/myobject_card.php'); - dol_delete_file($destdir.'/myobject_contact.php'); - dol_delete_file($destdir.'/myobject_note.php'); - dol_delete_file($destdir.'/myobject_document.php'); - dol_delete_file($destdir.'/myobject_agenda.php'); - dol_delete_file($destdir.'/myobject_list.php'); - dol_delete_file($destdir.'/lib/'.strtolower($modulename).'_myobject.lib.php'); - dol_delete_file($destdir.'/test/phpunit/MyObjectTest.php'); - dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject.sql'); - dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject_extrafields.sql'); - dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject.key.sql'); - dol_delete_file($destdir.'/sql/llx_'.strtolower($modulename).'_myobject_extrafields.key.sql'); - dol_delete_file($destdir.'/class/myobject.class.php'); - - dol_delete_dir($destdir.'/class', 1); - dol_delete_dir($destdir.'/sql', 1); - dol_delete_dir($destdir.'/scripts', 1); - dol_delete_dir($destdir.'/js', 1); - dol_delete_dir($destdir.'/css', 1); - dol_delete_dir($destdir.'/test/phpunit', 1); - dol_delete_dir($destdir.'/test', 1); - } - - // Edit PHP files - if (!$error) { - $listofphpfilestoedit = dol_dir_list($destdir, 'files', 1, '\.(php|MD|js|sql|txt|xml|lang)$', '', 'fullname', SORT_ASC, 0, 1); - foreach ($listofphpfilestoedit as $phpfileval) { - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''), - 'Editor name'=>$editorname, - 'https://www.example.com'=>$editorurl, - '$this->version = \'1.0\''=>'$this->version = \''.$version.'\'', - '$this->picto = \'generic\';'=>(empty($picto)) ? '$this->picto = \'generic\'' : '$this->picto = \''.$picto.'\';', - "modulefamily" =>$family, - '500000'=>$idmodule - ); - - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) { - $arrayreplacement['Editor name'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL)) { - $arrayreplacement['https://www.example.com'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_AUTHOR)) { - $arrayreplacement['---Put here your own copyright and developer email---'] = dol_print_date($now, '%Y').' '.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_VERSION)) { - $arrayreplacement['1.0'] = $conf->global->MODULEBUILDER_SPECIFIC_VERSION; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_FAMILY)) { - $arrayreplacement['modulefamily'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; - } - - $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); - //var_dump($result); - if ($result < 0) { - setEventMessages($langs->trans("ErrorFailToMakeReplacementInto", $phpfileval['fullname']), null, 'errors'); - } - } - - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_README)) { - setEventMessages($langs->trans("ContentOfREADMECustomized"), null, 'warnings'); - dol_delete_file($destdir.'/README.md'); - file_put_contents($destdir.'/README.md', $conf->global->MODULEBUILDER_SPECIFIC_README); - } - } - - if (!$error) { - setEventMessages('ModuleInitialized', null); - $module = $modulename; - - clearstatcache(true); - if (function_exists('opcache_invalidate')) { - opcache_reset(); // remove the include cache hell ! - } - - header("Location: ".$_SERVER["PHP_SELF"].'?module='.$modulename); - exit; - } -} - - -// init API, PHPUnit -if ($dirins && in_array($action, array('initapi', 'initphpunit', 'initpagecontact', 'initpagedocument', 'initpagenote', 'initpageagenda')) && !empty($module)) { - $modulename = ucfirst($module); // Force first letter in uppercase - $objectname = $tabobj; - $varnametoupdate = ''; - - if ($action == 'initapi') { - dol_mkdir($dirins.'/'.strtolower($module).'/class'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/class/api_mymodule.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/class/api_'.strtolower($module).'.class.php'; - } elseif ($action == 'initphpunit') { - dol_mkdir($dirins.'/'.strtolower($module).'/test/phpunit'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/test/phpunit/MyObjectTest.php'; - $destfile = $dirins.'/'.strtolower($module).'/test/phpunit/'.strtolower($objectname).'Test.php'; - } elseif ($action == 'initpagecontact') { - dol_mkdir($dirins.'/'.strtolower($module)); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/myobject_contact.php'; - $destfile = $dirins.'/'.strtolower($module).'/'.strtolower($objectname).'_contact.php'; - $varnametoupdate = 'showtabofpagecontact'; - } elseif ($action == 'initpagedocument') { - dol_mkdir($dirins.'/'.strtolower($module)); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/myobject_document.php'; - $destfile = $dirins.'/'.strtolower($module).'/'.strtolower($objectname).'_document.php'; - $varnametoupdate = 'showtabofpagedocument'; - } elseif ($action == 'initpagenote') { - dol_mkdir($dirins.'/'.strtolower($module)); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/myobject_note.php'; - $destfile = $dirins.'/'.strtolower($module).'/'.strtolower($objectname).'_note.php'; - $varnametoupdate = 'showtabofpagenote'; - } elseif ($action == 'initpageagenda') { - dol_mkdir($dirins.'/'.strtolower($module)); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/myobject_agenda.php'; - $destfile = $dirins.'/'.strtolower($module).'/'.strtolower($objectname).'_agenda.php'; - $varnametoupdate = 'showtabofpageagenda'; - } - - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - 'myobject'=>strtolower($objectname), - 'MyObject'=>$objectname, - 'MYOBJECT'=>strtoupper($objectname), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - - if ($varnametoupdate) { - // Now we update the object file to set $$varnametoupdate to 1 - $srcfile = $dirins.'/'.strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php'; - $arrayreplacement = array('/\$'.$varnametoupdate.' = 0;/' => '$'.$varnametoupdate.' = 1;'); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init ExtraFields -if ($dirins && $action == 'initsqlextrafields' && !empty($module)) { - $modulename = ucfirst($module); // Force first letter in uppercase - $objectname = $tabobj; - - dol_mkdir($dirins.'/'.strtolower($module).'/sql'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile1 = $srcdir.'/sql/llx_mymodule_myobject_extrafields.sql'; - $destfile1 = $dirins.'/'.strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.sql'; - //var_dump($srcfile); - //var_dump($destfile); - $result1 = dol_copy($srcfile1, $destfile1, 0, 0); - $srcfile2 = $srcdir.'/sql/llx_mymodule_myobject_extrafields.key.sql'; - $destfile2 = $dirins.'/'.strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.key.sql'; - //var_dump($srcfile); - //var_dump($destfile); - $result2 = dol_copy($srcfile2, $destfile2, 0, 0); - - if ($result1 > 0 && $result2 > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - 'My Object'=>$objectname, - 'MyObject'=>$objectname, - 'my object'=>strtolower($objectname), - 'myobject'=>strtolower($objectname), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile1, $arrayreplacement); - dolReplaceInFile($destfile2, $arrayreplacement); - } else { - $langs->load("errors"); - if ($result1 <= 0) { - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile1), null, 'errors'); - } - if ($result2 <= 0) { - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile2), null, 'errors'); - } - } - - // Now we update the object file to set $isextrafieldmanaged to 1 - $srcfile = $dirins.'/'.strtolower($module).'/class/'.strtolower($objectname).'.class.php'; - $arrayreplacement = array('/\$isextrafieldmanaged = 0;/' => '$isextrafieldmanaged = 1;'); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); -} - - -// init Hook -if ($dirins && $action == 'inithook' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/class'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/class/actions_mymodule.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/class/actions_'.strtolower($module).'.class.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init Trigger -if ($dirins && $action == 'inittrigger' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/core/triggers'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php'; - $destfile = $dirins.'/'.strtolower($module).'/core/triggers/interface_99_mod'.$module.'_'.$module.'Triggers.class.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init Widget -if ($dirins && $action == 'initwidget' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/core/boxes'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/core/boxes/mymodulewidget1.php'; - $destfile = $dirins.'/'.strtolower($module).'/core/boxes/'.strtolower($module).'widget1.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init CSS -if ($dirins && $action == 'initcss' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/css'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/css/mymodule.css.php'; - $destfile = $dirins.'/'.strtolower($module).'/css/'.strtolower($module).'.css.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''), - ); - - dolReplaceInFile($destfile, $arrayreplacement); - - // Update descriptor file to uncomment file - $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; - $arrayreplacement = array('/\/\/\s*\''.preg_quote('/'.strtolower($module).'/css/'.strtolower($module).'.css.php', '/').'\'/' => '\'/'.strtolower($module).'/css/'.strtolower($module).'.css.php\''); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init JS -if ($dirins && $action == 'initjs' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/js'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/js/mymodule.js.php'; - $destfile = $dirins.'/'.strtolower($module).'/js/'.strtolower($module).'.js.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - - // Update descriptor file to uncomment file - $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; - $arrayreplacement = array('/\/\/\s*\''.preg_quote('/'.strtolower($module).'/js/'.strtolower($module).'.js.php', '/').'\'/' => '\'/'.strtolower($module).'/js/'.strtolower($module).'.js.php\''); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init CLI -if ($dirins && $action == 'initcli' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/scripts'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/scripts/mymodule.php'; - $destfile = $dirins.'/'.strtolower($module).'/scripts/'.strtolower($module).'.php'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '__MYCOMPANY_NAME__'=>$mysoc->name, - '__KEYWORDS__'=>$modulename, - '__USER_FULLNAME__'=>$user->getFullName($langs), - '__USER_EMAIL__'=>$user->email, - '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), - '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// init Doc -if ($dirins && $action == 'initdoc' && !empty($module)) { - dol_mkdir($dirins.'/'.strtolower($module).'/doc'); - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $srcfile = $srcdir.'/doc/Documentation.asciidoc'; - $destfile = $dirins.'/'.strtolower($module).'/doc/Documentation.asciidoc'; - //var_dump($srcfile); - //var_dump($destfile); - $result = dol_copy($srcfile, $destfile, 0, 0); - - if ($result > 0) { - $modulename = ucfirst($module); // Force first letter in uppercase - $modulelowercase = strtolower($module); - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($modulename), - 'MyModule'=>$modulename, - 'MYMODULE'=>strtoupper($modulename), - 'My module'=>$modulename, - 'my module'=>$modulename, - 'Mon module'=>$modulename, - 'mon module'=>$modulename, - 'htdocs/modulebuilder/template'=>strtolower($modulename), - '__MYCOMPANY_NAME__'=>$mysoc->name, - '__KEYWORDS__'=>$modulename, - '__USER_FULLNAME__'=>$user->getFullName($langs), - '__USER_EMAIL__'=>$user->email, - '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'), - '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - dolReplaceInFile($destfile, $arrayreplacement); - - // Delete old documentation files - $FILENAMEDOC = $modulelowercase.'.html'; - $FILENAMEDOCPDF = $modulelowercase.'.pdf'; - $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; - $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; - $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; - $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; - - dol_delete_file($outputfiledoc, 0, 0, 0, null, false, 0); - dol_delete_file($outputfiledocpdf, 0, 0, 0, null, false, 0); - } else { - $langs->load("errors"); - setEventMessages($langs->trans('ErrorFailToCreateFile', $destfile), null, 'errors'); - } -} - - -// add Language -if ($dirins && $action == 'addlanguage' && !empty($module)) { - $newlangcode = GETPOST('newlangcode', 'aZ09'); - - if ($newlangcode) { - $modulelowercase = strtolower($module); - - // Dir for module - $diroflang = dol_buildpath($modulelowercase, 0); - - if ($diroflang == $dolibarr_main_document_root.'/'.$modulelowercase) { - // This is not a custom module, we force diroflang to htdocs root - $diroflang = $dolibarr_main_document_root; - - $srcfile = $diroflang.'/langs/en_US/'.$modulelowercase.'.lang'; - $destfile = $diroflang.'/langs/'.$newlangcode.'/'.$modulelowercase.'.lang'; - - $result = dol_copy($srcfile, $destfile, 0, 0); - if ($result < 0) { - setEventMessages($langs->trans("ErrorFailToCopyFile", $srcfile, $destfile), null, 'errors'); - } - } else { - $srcfile = $diroflang.'/langs/en_US'; - $destfile = $diroflang.'/langs/'.$newlangcode; - - $result = dolCopyDir($srcfile, $destfile, 0, 0); - } - } else { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Language")), null, 'errors'); - } -} - - -// remove/delete File -if ($dirins && $action == 'confirm_removefile' && !empty($module)) { - $objectname = $tabobj; - - $relativefilename = dol_sanitizePathName(GETPOST('file', 'restricthtml')); - if ($relativefilename) { - $dirnametodelete = dirname($relativefilename); - $filetodelete = $dirins.'/'.$relativefilename; - $dirtodelete = $dirins.'/'.$dirnametodelete; - - $result = dol_delete_file($filetodelete); - if (!$result) { - setEventMessages($langs->trans("ErrorFailToDeleteFile", basename($filetodelete)), null, 'errors'); - } else { - // If we delete a .sql file, we delete also the other .sql file - if (preg_match('/\.sql$/', $relativefilename)) { - if (preg_match('/\.key\.sql$/', $relativefilename)) { - $relativefilename = preg_replace('/\.key\.sql$/', '.sql', $relativefilename); - $filetodelete = $dirins.'/'.$relativefilename; - $result = dol_delete_file($filetodelete); - } elseif (preg_match('/\.sql$/', $relativefilename)) { - $relativefilename = preg_replace('/\.sql$/', '.key.sql', $relativefilename); - $filetodelete = $dirins.'/'.$relativefilename; - $result = dol_delete_file($filetodelete); - } - } - - if (dol_is_dir_empty($dirtodelete)) { - dol_delete_dir($dirtodelete); - } - - // Update descriptor file to comment file - if (in_array($tab, array('css', 'js'))) { - $srcfile = $dirins.'/'.strtolower($module).'/core/modules/mod'.$module.'.class.php'; - $arrayreplacement = array('/^\s*\''.preg_quote('/'.$relativefilename, '/').'\',*/m'=>' // \'/'.$relativefilename.'\','); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } - - if (preg_match('/_extrafields/', $relativefilename)) { - // Now we update the object file to set $isextrafieldmanaged to 0 - $srcfile = $dirins.'/'.strtolower($module).'/class/'.strtolower($objectname).'.class.php'; - $arrayreplacement = array('/\$isextrafieldmanaged = 1;/' => '$isextrafieldmanaged = 0;'); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } - - // Now we update the lib file to set $showtabofpagexxx to 0 - $varnametoupdate = ''; - $reg = array(); - if (preg_match('/_([a-z]+)\.php$/', $relativefilename, $reg)) { - $varnametoupdate = 'showtabofpage'.$reg[1]; - } - if ($varnametoupdate) { - $srcfile = $dirins.'/'.strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php'; - $arrayreplacement = array('/\$'.$varnametoupdate.' = 1;/' => '$'.$varnametoupdate.' = 0;'); - dolReplaceInFile($srcfile, $arrayreplacement, '', 0, 0, 1); - } - } - } -} - -// Init an object -if ($dirins && $action == 'initobject' && $module && $objectname) { - $objectname = ucfirst($objectname); - - $dirins = $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; - $moduletype = $listofmodules[strtolower($module)]['moduletype']; - - if (preg_match('/[^a-z0-9_]/i', $objectname)) { - $error++; - setEventMessages($langs->trans("SpaceOrSpecialCharAreNotAllowed"), null, 'errors'); - $tabobj = 'newobject'; - } - if (class_exists($objectname)) { - // TODO Add a more efficient detection. Scan disk ? - $error++; - setEventMessages($langs->trans("AnObjectWithThisClassNameAlreadyExists"), null, 'errors'); - $tabobj = 'newobject'; - } - - $srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template'; - $destdir = $dirins.'/'.strtolower($module); - - // The dir was not created by init - dol_mkdir($destdir.'/class'); - dol_mkdir($destdir.'/img'); - dol_mkdir($destdir.'/lib'); - dol_mkdir($destdir.'/scripts'); - dol_mkdir($destdir.'/sql'); - - // Scan dir class to find if an object with same name already exists. - if (!$error) { - $dirlist = dol_dir_list($destdir.'/class', 'files', 0, '\.txt$'); - $alreadyfound = false; - foreach ($dirlist as $key => $val) { - $filefound = preg_replace('/\.txt$/', '', $val['name']); - if (strtolower($objectname) == strtolower($filefound) && $objectname != $filefound) { - $alreadyfound = true; - $error++; - setEventMessages($langs->trans("AnObjectAlreadyExistWithThisNameAndDiffCase"), null, 'errors'); - break; - } - } - } - - // If we must reuse a table for properties, define $stringforproperties - $stringforproperties = ''; - $tablename = GETPOST('initfromtablename', 'alpha'); - if ($tablename) { - $_results = $db->DDLDescTable($tablename); - if (empty($_results)) { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorTableNotFound", $tablename), null, 'errors'); - } else { - /** - * 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password') - * Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)" - * 'label' the translation key. - * 'picto' is code of a picto to show before value in forms - * 'enabled' is a condition when the field must be managed (Example: 1 or '$conf->global->MY_SETUP_PARAM' or 'isModEnabled("multicurrency")' ...) - * 'position' is the sort order of field. - * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). - * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). 5=Visible on list and view only (not create/not update). Using a negative value means field is not shown by default on list but can be selected for viewing) - * 'noteditable' says if field is not editable (1 or 0) - * 'alwayseditable' says if field can be modified also when status is not draft ('1' or '0') - * 'default' is a default value for creation (can still be overwrote by the Setup of Default Values if field is editable in creation form). Note: If default is set to '(PROV)' and field is 'ref', the default value will be set to '(PROVid)' where id is rowid when a new record is created. - * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). - * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. - * 'isameasure' must be set to 1 or 2 if field can be used for measure. Field type must be summable like integer or double(24,8). Use 1 in most cases, or 2 if you don't want to see the column total into list (for example for percentage) - * 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'cssview'=>'wordbreak', 'csslist'=>'tdoverflowmax200' - * 'help' is a 'TranslationString' to use to show a tooltip on field. You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click. - * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record - * 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code. - * 'arrayofkeyval' to set a list of values if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel"). Note that type can be 'integer' or 'varchar' - * 'autofocusoncreate' to have field having the focus on a create form. Only 1 field should have this property set to 1. - * 'comment' is not used. You can store here any text of your choice. It is not used by application. - * 'validate' is 1 if need to validate with $this->validateField() - * 'copytoclipboard' is 1 or 2 to allow to add a picto to copy value into clipboard (1=picto after label, 2=picto after value) - */ - - /*public $fields=array( - 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'index'=>1, 'position'=>1, 'comment'=>'Id'), - 'ref' =>array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'comment'=>'Reference of object'), - 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20), - 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth200', 'help'=>'Help text', 'alwayseditable'=>'1'), - 'amount' =>array('type'=>'double(24,8)', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text'), - 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'visible'=>1, 'enabled'=>1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'searchall'=>1, 'help'=>'LinkToThirdparty'), - 'description' =>array('type'=>'text', 'label'=>'Descrption', 'enabled'=>1, 'visible'=>0, 'position'=>60), - 'note_public' =>array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61), - 'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>62), - 'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>500), - 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501), - //'date_valid' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502), - 'fk_user_creat' =>array('type'=>'integer', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>510), - 'fk_user_modif' =>array('type'=>'integer', 'label'=>'UserModif', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>511), - //'fk_user_valid' =>array('type'=>'integer', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512), - 'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'index'=>0, 'position'=>1000), - 'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'default'=>0, 'index'=>1, 'position'=>1000, 'arrayofkeyval'=>array(0=>'Draft', 1=>'Active', -1=>'Cancel')), - );*/ - - $stringforproperties = '// BEGIN MODULEBUILDER PROPERTIES'."\n"; - $stringforproperties .= 'public $fields=array('."\n"; - $i = 10; - while ($obj = $db->fetch_object($_results)) { - // fieldname - $fieldname = $obj->Field; - // type - $type = $obj->Type; - if ($type == 'int(11)') { - $type = 'integer'; - } - if ($type == 'float') { - $type = 'real'; - } - if (strstr($type, 'tinyint')) { - $type = 'integer'; - } - if ($obj->Field == 'fk_soc') { - $type = 'integer:Societe:societe/class/societe.class.php'; - } - if (preg_match('/^fk_proj/', $obj->Field)) { - $type = 'integer:Project:projet/class/project.class.php:1:fk_statut=1'; - } - if (preg_match('/^fk_prod/', $obj->Field)) { - $type = 'integer:Product:product/class/product.class.php:1'; - } - if ($obj->Field == 'fk_warehouse') { - $type = 'integer:Entrepot:product/stock/class/entrepot.class.php'; - } - if (preg_match('/^(fk_user|fk_commercial)/', $obj->Field)) { - $type = 'integer:User:user/class/user.class.php'; - } - - // notnull - $notnull = ($obj->Null == 'YES' ? 0 : 1); - if ($fieldname == 'fk_user_modif') { - $notnull = -1; - } - // label - $label = preg_replace('/_/', '', ucfirst($fieldname)); - if ($fieldname == 'rowid') { - $label = 'TechnicalID'; - } - if ($fieldname == 'import_key') { - $label = 'ImportId'; - } - if ($fieldname == 'fk_soc') { - $label = 'ThirdParty'; - } - if ($fieldname == 'tms') { - $label = 'DateModification'; - } - if ($fieldname == 'datec') { - $label = 'DateCreation'; - } - if ($fieldname == 'date_valid') { - $label = 'DateValidation'; - } - if ($fieldname == 'datev') { - $label = 'DateValidation'; - } - if ($fieldname == 'note_private') { - $label = 'NotePublic'; - } - if ($fieldname == 'note_public') { - $label = 'NotePrivate'; - } - if ($fieldname == 'fk_user_creat') { - $label = 'UserAuthor'; - } - if ($fieldname == 'fk_user_modif') { - $label = 'UserModif'; - } - if ($fieldname == 'fk_user_valid') { - $label = 'UserValidation'; - } - // visible - $visible = -1; - if ($fieldname == 'entity') { - $visible = -2; - } - if ($fieldname == 'import_key') { - $visible = -2; - } - if ($fieldname == 'fk_user_creat') { - $visible = -2; - } - if ($fieldname == 'fk_user_modif') { - $visible = -2; - } - if (in_array($fieldname, array('ref_ext', 'model_pdf', 'note_public', 'note_private'))) { - $visible = 0; - } - // enabled - $enabled = 1; - // default - $default = ''; - if ($fieldname == 'entity') { - $default = 1; - } - // position - $position = $i; - if (in_array($fieldname, array('status', 'statut', 'fk_status', 'fk_statut'))) { - $position = 500; - } - if ($fieldname == 'import_key') { - $position = 900; - } - // $alwayseditable - if ($fieldname == 'label') { - $alwayseditable = 1; - } - // index - $index = 0; - if ($fieldname == 'entity') { - $index = 1; - } - // css, cssview, csslist - $css = ''; - $cssview = ''; - $csslist = ''; - if (preg_match('/^fk_/', $fieldname)) { - $css = 'maxwidth500 widthcentpercentminusxx'; - } - if ($fieldname == 'label') { - $css = 'minwidth300'; - $cssview = 'wordbreak'; - } - if (in_array($fieldname, array('note_public', 'note_private'))) { - $cssview = 'wordbreak'; - } - if (in_array($fieldname, array('ref', 'label')) || preg_match('/integer:/', $type)) { - $csslist = 'tdoverflowmax150'; - } - - // type - $picto = $obj->Picto; - if ($obj->Field == 'fk_soc') { - $picto = 'company'; - } - if (preg_match('/^fk_proj/', $obj->Field)) { - $picto = 'project'; - } - - // Build the property string - $stringforproperties .= "'".$obj->Field."'=>array('type'=>'".$type."', 'label'=>'".$label."',"; - if ($default != '') { - $stringforproperties .= " 'default'=>".$default.","; - } - $stringforproperties .= " 'enabled'=>".$enabled.","; - $stringforproperties .= " 'visible'=>".$visible; - if ($notnull) { - $stringforproperties .= ", 'notnull'=>".$notnull; - } - if ($alwayseditable) { - $stringforproperties .= ", 'alwayseditable'=>1"; - } - if ($fieldname == 'ref' || $fieldname == 'code') { - $stringforproperties .= ", 'showoncombobox'=>1"; - } - $stringforproperties .= ", 'position'=>".$position; - if ($index) { - $stringforproperties .= ", 'index'=>".$index; - } - if ($picto) { - $stringforproperties .= ", 'picto'=>'".$picto."'"; - } - if ($css) { - $stringforproperties .= ", 'css'=>'".$css."'"; - } - if ($cssview) { - $stringforproperties .= ", 'cssview'=>'".$cssview."'"; - } - if ($csslist) { - $stringforproperties .= ", 'csslist'=>'".$csslist."'"; - } - $stringforproperties .= "),\n"; - $i += 5; - } - $stringforproperties .= ');'."\n"; - $stringforproperties .= '// END MODULEBUILDER PROPERTIES'."\n"; - } - } - - if (!$error) { - // Copy some files - $filetogenerate = array( - 'myobject_card.php'=>strtolower($objectname).'_card.php', - 'myobject_note.php'=>strtolower($objectname).'_note.php', - 'myobject_contact.php'=>strtolower($objectname).'_contact.php', - 'myobject_document.php'=>strtolower($objectname).'_document.php', - 'myobject_agenda.php'=>strtolower($objectname).'_agenda.php', - 'myobject_list.php'=>strtolower($objectname).'_list.php', - 'admin/myobject_extrafields.php'=>'admin/'.strtolower($objectname).'_extrafields.php', - 'lib/mymodule_myobject.lib.php'=>'lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php', - //'test/phpunit/MyObjectTest.php'=>'test/phpunit/'.strtolower($objectname).'Test.php', - 'sql/llx_mymodule_myobject.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql', - 'sql/llx_mymodule_myobject.key.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql', - 'sql/llx_mymodule_myobject_extrafields.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.sql', - 'sql/llx_mymodule_myobject_extrafields.key.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.key.sql', - //'scripts/mymodule.php'=>'scripts/'.strtolower($objectname).'.php', - 'class/myobject.class.php'=>'class/'.strtolower($objectname).'.class.php', - //'class/api_mymodule.class.php'=>'class/api_'.strtolower($module).'.class.php', - ); - - if (GETPOST('includerefgeneration', 'aZ09')) { - dol_mkdir($destdir.'/core/modules/'.strtolower($module)); - - $filetogenerate += array( - 'core/modules/mymodule/mod_myobject_advanced.php'=>'core/modules/'.strtolower($module).'/mod_'.strtolower($objectname).'_advanced.php', - 'core/modules/mymodule/mod_myobject_standard.php'=>'core/modules/'.strtolower($module).'/mod_'.strtolower($objectname).'_standard.php', - 'core/modules/mymodule/modules_myobject.php'=>'core/modules/'.strtolower($module).'/modules_'.strtolower($objectname).'.php', - ); - } - if (GETPOST('includedocgeneration', 'aZ09')) { - dol_mkdir($destdir.'/core/modules/'.strtolower($module)); - dol_mkdir($destdir.'/core/modules/'.strtolower($module).'/doc'); - - $filetogenerate += array( - 'core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php'=>'core/modules/'.strtolower($module).'/doc/doc_generic_'.strtolower($objectname).'_odt.modules.php', - 'core/modules/mymodule/doc/pdf_standard_myobject.modules.php'=>'core/modules/'.strtolower($module).'/doc/pdf_standard_'.strtolower($objectname).'.modules.php' - ); - } - - - if (!$error) { - foreach ($filetogenerate as $srcfile => $destfile) { - $result = dol_copy($srcdir.'/'.$srcfile, $destdir.'/'.$destfile, $newmask, 0); - if ($result <= 0) { - if ($result < 0) { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyFile", $srcdir.'/'.$srcfile, $destdir.'/'.$destfile), null, 'errors'); - } else { - // $result == 0 - setEventMessages($langs->trans("FileAlreadyExists", $destfile), null, 'warnings'); - } - } - } - } - - // Replace property section with $stringforproperties - if (!$error && $stringforproperties) { - //var_dump($stringforproperties);exit; - $arrayreplacement = array( - '/\/\/ BEGIN MODULEBUILDER PROPERTIES.*\/\/ END MODULEBUILDER PROPERTIES/ims' => $stringforproperties - ); - - dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); - } - - // Edit the class 'class/'.strtolower($objectname).'.class.php' - if (GETPOST('includerefgeneration', 'aZ09')) { - // Replace 'visible'=>1, 'noteditable'=>0, 'default'=>'' - $arrayreplacement = array( - '/\'visible\'=>1,\s*\'noteditable\'=>0,\s*\'default\'=>\'\'/' => "'visible'=>4, 'noteditable'=>1, 'default'=>'(PROV)'" - ); - //var_dump($arrayreplacement);exit; - //var_dump($destdir.'/class/'.strtolower($objectname).'.class.php');exit; - dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); - - $arrayreplacement = array( - '/\'models\' => 0,/' => '\'models\' => 1,' - ); - dolReplaceInFile($destdir.'/core/modules/mod'.$module.'.class.php', $arrayreplacement, '', 0, 0, 1); - } - - // Edit the setup file and the card page - if (GETPOST('includedocgeneration', 'aZ09')) { - // Replace some var init into some files - $arrayreplacement = array( - '/\$includedocgeneration = 0;/' => '$includedocgeneration = 1;' - ); - dolReplaceInFile($destdir.'/class/'.strtolower($objectname).'.class.php', $arrayreplacement, '', 0, 0, 1); - dolReplaceInFile($destdir.'/'.strtolower($objectname).'_card.php', $arrayreplacement, '', 0, 0, 1); - - $arrayreplacement = array( - '/\'models\' => 0,/' => '\'models\' => 1,' - ); - - dolReplaceInFile($destdir.'/core/modules/mod'.$module.'.class.php', $arrayreplacement, '', 0, 0, 1); - } - - // TODO Update entries '$myTmpObjects['MyObject']=array('includerefgeneration'=>0, 'includedocgeneration'=>0);' - - - // Scan for object class files - $listofobject = dol_dir_list($destdir.'/class', 'files', 0, '\.class\.php$'); - - $firstobjectname = ''; - foreach ($listofobject as $fileobj) { - if (preg_match('/^api_/', $fileobj['name'])) { - continue; - } - if (preg_match('/^actions_/', $fileobj['name'])) { - continue; - } - - $tmpcontent = file_get_contents($fileobj['fullname']); - $reg = array(); - if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) { - $objectnameloop = $reg[1]; - if (empty($firstobjectname)) { - $firstobjectname = $objectnameloop; - } - } - - // Regenerate left menu entry in descriptor for $objectname - $stringtoadd = " - \$this->menu[\$r++]=array( - // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'fk_menu'=>'fk_mainmenu=mymodule', - // This is a Left menu entry - 'type'=>'left', - 'titre'=>'List MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject', - 'url'=>'/mymodule/myobject_list.php', - // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'langs'=>'mymodule@mymodule', - 'position'=>1100+\$r, - // Define condition to show or hide menu entry. Use '\$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '\$leftmenu==\'system\'' to show if leftmenu system is selected. - 'enabled'=>'\$conf->mymodule->enabled', - // Use 'perms'=>'\$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'perms'=>'1', - 'target'=>'', - // 0=Menu for internal users, 1=external users, 2=both - 'user'=>2, - ); - \$this->menu[\$r++]=array( - // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=mymodule_myobject', - // This is a Left menu entry - 'type'=>'left', - 'titre'=>'New MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject', - 'url'=>'/mymodule/myobject_card.php?action=create', - // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'langs'=>'mymodule@mymodule', - 'position'=>1100+\$r, - // Define condition to show or hide menu entry. Use '\$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '\$leftmenu==\'system\'' to show if leftmenu system is selected. - 'enabled'=>'\$conf->mymodule->enabled', - // Use 'perms'=>'\$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'perms'=>'1', - 'target'=>'', - // 0=Menu for internal users, 1=external users, 2=both - 'user'=>2 - );\n"; - $stringtoadd = preg_replace('/MyObject/', $objectnameloop, $stringtoadd); - $stringtoadd = preg_replace('/mymodule/', strtolower($module), $stringtoadd); - $stringtoadd = preg_replace('/myobject/', strtolower($objectnameloop), $stringtoadd); - - $moduledescriptorfile = $destdir.'/core/modules/mod'.$module.'.class.php'; - - // TODO Allow a replace with regex using dolReplaceInFile with param arryreplacementisregex to 1 - // TODO Avoid duplicate addition - - dolReplaceInFile($moduledescriptorfile, array('END MODULEBUILDER LEFTMENU MYOBJECT */' => '*/'."\n".$stringtoadd."\n\t\t/* END MODULEBUILDER LEFTMENU MYOBJECT */")); - - // Add module descriptor to list of files to replace "MyObject' string with real name of object. - $filetogenerate[] = 'core/modules/mod'.$module.'.class.php'; - } - } - - if (!$error) { - // Edit PHP files to make replacement - foreach ($filetogenerate as $destfile) { - $phpfileval['fullname'] = $destdir.'/'.$destfile; - - //var_dump($phpfileval['fullname']); - $arrayreplacement = array( - 'mymodule'=>strtolower($module), - 'MyModule'=>$module, - 'MYMODULE'=>strtoupper($module), - 'My module'=>$module, - 'my module'=>$module, - 'mon module'=>$module, - 'Mon module'=>$module, - 'htdocs/modulebuilder/template/'=>strtolower($modulename), - 'myobject'=>strtolower($objectname), - 'MyObject'=>$objectname, - 'MYOBJECT'=>strtoupper($objectname), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') - ); - - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) { - $arrayreplacement['Editor name'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL)) { - $arrayreplacement['https://www.example.com'] = $conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_AUTHOR)) { - $arrayreplacement['---Put here your own copyright and developer email---'] = dol_print_date($now, '%Y').' '.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_VERSION)) { - $arrayreplacement['1.0'] = $conf->global->MODULEBUILDER_SPECIFIC_VERSION; - } - if (!empty($conf->global->MODULEBUILDER_SPECIFIC_FAMILY)) { - $arrayreplacement['other'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; - } - - $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); - //var_dump($result); - if ($result < 0) { - setEventMessages($langs->trans("ErrorFailToMakeReplacementInto", $phpfileval['fullname']), null, 'errors'); - } - } - } - - if (!$error) { - // Edit the class file to write properties - $object = rebuildObjectClass($destdir, $module, $objectname, $newmask); - - if (is_numeric($object) && $object <= 0) { - $pathoffiletoeditsrc = $destdir.'/class/'.strtolower($objectname).'.class.php'; - setEventMessages($langs->trans('ErrorFailToCreateFile', $pathoffiletoeditsrc), null, 'errors'); - $error++; - } - } - if (!$error) { - // Edit sql with new properties - $result = rebuildObjectSql($destdir, $module, $objectname, $newmask, '', $object); - - if ($result <= 0) { - setEventMessages($langs->trans('ErrorFailToCreateFile', '.sql'), null); - $error++; - } - } - - if (!$error) { - setEventMessages($langs->trans('FilesForObjectInitialized', $objectname), null); - $tabobj = $objectname; - } else { - $tabobj = 'newobject'; - } -} - -// Add a dictionary -if ($dirins && $action == 'initdic' && $module && $dicname) { - if (!$error) { - $newdicname = $dicname; - if (!preg_match('/^c_/', $newdicname)) { - $newdicname = 'c_'.$dicname; - } - - // TODO - - setEventMessages($langs->trans("FeatureNotYetAvailable"), null, 'errors'); - } -} - -// Delete a SQL table -if ($dirins && ($action == 'droptable' || $action == 'droptableextrafields') && !empty($module) && !empty($tabobj)) { - $objectname = $tabobj; - - $arrayoftables = array(); - if ($action == 'droptable') { - $arrayoftables[] = MAIN_DB_PREFIX.strtolower($module).'_'.strtolower($tabobj); - } - if ($action == 'droptableextrafields') { - $arrayoftables[] = MAIN_DB_PREFIX.strtolower($module).'_'.strtolower($tabobj).'_extrafields'; - } - - foreach ($arrayoftables as $tabletodrop) { - $nb = -1; - $sql = "SELECT COUNT(*) as nb FROM ".$tabletodrop; - $resql = $db->query($sql); - if ($resql) { - $obj = $db->fetch_object($resql); - if ($obj) { - $nb = $obj->nb; - } - } else { - if ($db->lasterrno() == 'DB_ERROR_NOSUCHTABLE') { - setEventMessages($langs->trans("TableDoesNotExists", $tabletodrop), null, 'warnings'); - } else { - dol_print_error($db); - } - } - if ($nb == 0) { - $resql = $db->DDLDropTable($tabletodrop); - //var_dump($resql); - setEventMessages($langs->trans("TableDropped", $tabletodrop), null, 'mesgs'); - } elseif ($nb > 0) { - setEventMessages($langs->trans("TableNotEmptyDropCanceled", $tabletodrop), null, 'warnings'); - } - } -} - -if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && !empty($tabobj)) { - $error = 0; - - $objectname = $tabobj; - - $dirins = $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; - $moduletype = $listofmodules[strtolower($module)]['moduletype']; - - $srcdir = $dirread.'/'.strtolower($module); - $destdir = $dirins.'/'.strtolower($module); - dol_mkdir($destdir); - - // We click on add property - if (!GETPOST('regenerateclasssql') && !GETPOST('regeneratemissing')) { - if (!GETPOST('propname', 'aZ09')) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Name")), null, 'errors'); - } - if (!GETPOST('proplabel', 'alpha')) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors'); - } - if (!GETPOST('proptype', 'alpha')) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Type")), null, 'errors'); - } - - if (!$error && !GETPOST('regenerateclasssql')&& !GETPOST('regeneratemissing')) { - $addfieldentry = array( - 'name'=>GETPOST('propname', 'aZ09'), - 'label'=>GETPOST('proplabel', 'alpha'), - 'type'=>GETPOST('proptype', 'alpha'), - 'arrayofkeyval'=>GETPOST('proparrayofkeyval', 'restricthtml'), // Example json string '{"0":"Draft","1":"Active","-1":"Cancel"}' - 'visible'=>GETPOST('propvisible', 'int'), - 'enabled'=>GETPOST('propenabled', 'int'), - 'position'=>GETPOST('propposition', 'int'), - 'notnull'=>GETPOST('propnotnull', 'int'), - 'index'=>GETPOST('propindex', 'int'), - 'searchall'=>GETPOST('propsearchall', 'int'), - 'isameasure'=>GETPOST('propisameasure', 'int'), - 'comment'=>GETPOST('propcomment', 'alpha'), - 'help'=>GETPOST('prophelp', 'alpha'), - 'css'=>GETPOST('propcss', 'alpha'), // Can be 'maxwidth500 widthcentpercentminusxx' for example - 'cssview'=>GETPOST('propcssview', 'alpha'), - 'csslist'=>GETPOST('propcsslist', 'alpha'), - 'default'=>GETPOST('propdefault', 'restricthtml'), - 'noteditable'=>intval(GETPOST('propnoteditable', 'int')), - 'alwayseditable'=>intval(GETPOST('propalwayseditable', 'int')), - 'validate' => GETPOST('propvalidate', 'int') - ); - - - if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) { - $addfieldentry['arrayofkeyval'] = json_decode($addfieldentry['arrayofkeyval'], true); - } - } - } else { - $addfieldentry = array(); - } - - /*if (GETPOST('regeneratemissing')) - { - setEventMessages($langs->trans("FeatureNotYetAvailable"), null, 'warnings'); - $error++; - }*/ - - $moduletype = $listofmodules[strtolower($module)]['moduletype']; - - // Edit the class file to write properties - if (!$error) { - $object = rebuildObjectClass($destdir, $module, $objectname, $newmask, $srcdir, $addfieldentry, $moduletype); - - if (is_numeric($object) && $object <= 0) { - $pathoffiletoeditsrc = $destdir.'/class/'.strtolower($objectname).'.class.php'; - setEventMessages($langs->trans('ErrorFailToCreateFile', $pathoffiletoeditsrc), null, 'errors'); - $error++; - } - } - - // Edit sql with new properties - if (!$error) { - $result = rebuildObjectSql($destdir, $module, $objectname, $newmask, $srcdir, $object, $moduletype); - - if ($result <= 0) { - setEventMessages($langs->trans('ErrorFailToCreateFile', '.sql'), null, 'errors'); - $error++; - } - } - - if (!$error) { - clearstatcache(true); - - setEventMessages($langs->trans('FilesForObjectUpdated', $objectname), null); - - setEventMessages($langs->trans('WarningDatabaseIsNotUpdated'), null); - - // Make a redirect to reload all data - header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname.'&nocache='.time()); - - exit; - } -} - -if ($dirins && $action == 'confirm_deleteproperty' && $propertykey) { - $objectname = $tabobj; - - $dirins = $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; - $moduletype = $listofmodules[strtolower($module)]['moduletype']; - - $srcdir = $dirread.'/'.strtolower($module); - $destdir = $dirins.'/'.strtolower($module); - dol_mkdir($destdir); - - // Edit the class file to write properties - if (!$error) { - $object = rebuildObjectClass($destdir, $module, $objectname, $newmask, $srcdir, array(), $propertykey); - - if (is_numeric($object) && $object <= 0) { - $pathoffiletoeditsrc = $destdir.'/class/'.strtolower($objectname).'.class.php'; - setEventMessages($langs->trans('ErrorFailToCreateFile', $pathoffiletoeditsrc), null, 'errors'); - $error++; - } - } - - // Edit sql with new properties - if (!$error) { - $result = rebuildObjectSql($destdir, $module, $objectname, $newmask, $srcdir, $object); - - if ($result <= 0) { - setEventMessages($langs->trans('ErrorFailToCreateFile', '.sql'), null, 'errors'); - $error++; - } - } - - if (!$error) { - setEventMessages($langs->trans('FilesForObjectUpdated', $objectname), null); - - clearstatcache(true); - - // Make a redirect to reload all data - header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname); - - exit; - } -} - -if ($dirins && $action == 'confirm_deletemodule') { - if (preg_match('/[^a-z0-9_]/i', $module)) { - $error++; - setEventMessages($langs->trans("SpaceOrSpecialCharAreNotAllowed"), null, 'errors'); - } - - if (!$error) { - $modulelowercase = strtolower($module); - - // Dir for module - $dir = $dirins.'/'.$modulelowercase; - - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - // Dir for module - $dir = dol_buildpath($modulelowercase, 0); - - // Zip file to build - $FILENAMEZIP = ''; - - // Load module - dol_include_once($pathtofile); - $class = 'mod'.$module; - - if (class_exists($class)) { - try { - $moduleobj = new $class($db); - } catch (Exception $e) { - $error++; - dol_print_error($db, $e->getMessage()); - } - } else { - $error++; - $langs->load("errors"); - dol_print_error($db, $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module)); - exit; - } - - $moduleobj->remove(); - - $result = dol_delete_dir_recursive($dir); - - if ($result > 0) { - setEventMessages($langs->trans("DirWasRemoved", $modulelowercase), null); - - clearstatcache(true); - if (function_exists('opcache_invalidate')) { - opcache_reset(); // remove the include cache hell ! - } - - header("Location: ".$_SERVER["PHP_SELF"].'?module=deletemodule'); - exit; - } else { - setEventMessages($langs->trans("PurgeNothingToDelete"), null, 'warnings'); - } - } - - $action = ''; - $module = 'deletemodule'; -} - -if ($dirins && $action == 'confirm_deleteobject' && $objectname) { - if (preg_match('/[^a-z0-9_]/i', $objectname)) { - $error++; - setEventMessages($langs->trans("SpaceOrSpecialCharAreNotAllowed"), null, 'errors'); - } - - if (!$error) { - $modulelowercase = strtolower($module); - $objectlowercase = strtolower($objectname); - - // Dir for module - $dir = $dirins.'/'.$modulelowercase; - - // Delete some files - $filetodelete = array( - 'myobject_card.php'=>strtolower($objectname).'_card.php', - 'myobject_note.php'=>strtolower($objectname).'_note.php', - 'myobject_contact.php'=>strtolower($objectname).'_contact.php', - 'myobject_document.php'=>strtolower($objectname).'_document.php', - 'myobject_agenda.php'=>strtolower($objectname).'_agenda.php', - 'myobject_list.php'=>strtolower($objectname).'_list.php', - 'admin/myobject_extrafields.php'=>'admin/'.strtolower($objectname).'_extrafields.php', - 'lib/mymodule_myobject.lib.php'=>'lib/'.strtolower($module).'_'.strtolower($objectname).'.lib.php', - 'test/phpunit/MyObjectTest.php'=>'test/phpunit/'.strtolower($objectname).'Test.php', - 'sql/llx_mymodule_myobject.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql', - 'sql/llx_mymodule_myobject_extrafields.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.sql', - 'sql/llx_mymodule_myobject.key.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql', - 'sql/llx_mymodule_myobject_extrafields.key.sql'=>'sql/llx_'.strtolower($module).'_'.strtolower($objectname).'_extrafields.key.sql', - 'scripts/myobject.php'=>'scripts/'.strtolower($objectname).'.php', - 'class/myobject.class.php'=>'class/'.strtolower($objectname).'.class.php', - 'class/api_myobject.class.php'=>'class/api_'.strtolower($module).'.class.php', - 'core/modules/mymodule/mod_myobject_advanced.php'=>'core/modules/'.strtolower($module).'/mod_'.strtolower($objectname).'_advanced.php', - 'core/modules/mymodule/mod_myobject_standard.php'=>'core/modules/'.strtolower($module).'/mod_'.strtolower($objectname).'_standard.php', - 'core/modules/mymodule/modules_myobject.php'=>'core/modules/'.strtolower($module).'/modules_'.strtolower($objectname).'.php', - 'core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php'=>'core/modules/'.strtolower($module).'/doc/doc_generic_'.strtolower($objectname).'_odt.modules.php', - 'core/modules/mymodule/doc/pdf_standard_myobject.modules.php'=>'core/modules/'.strtolower($module).'/doc/pdf_standard_'.strtolower($objectname).'.modules.php' - ); - - $resultko = 0; - foreach ($filetodelete as $tmpfiletodelete) { - $resulttmp = dol_delete_file($dir.'/'.$tmpfiletodelete, 0, 0, 1); - $resulttmp = dol_delete_file($dir.'/'.$tmpfiletodelete.'.back', 0, 0, 1); - if (!$resulttmp) { - $resultko++; - } - } - - if ($resultko == 0) { - setEventMessages($langs->trans("FilesDeleted"), null); - } else { - setEventMessages($langs->trans("ErrorSomeFilesCouldNotBeDeleted"), null, 'warnings'); - } - } - - $action = ''; - $tabobj = 'deleteobject'; -} - -if ($dirins && $action == 'generatedoc') { - $modulelowercase = strtolower($module); - - // Dir for module - $dirofmodule = dol_buildpath($modulelowercase, 0).'/doc'; - - $FILENAMEDOC = strtolower($module).'.html'; - - $util = new Utils($db); - $result = $util->generateDoc($module); - - if ($result > 0) { - setEventMessages($langs->trans("DocFileGeneratedInto", $dirofmodule), null); - } else { - setEventMessages($util->error, $util->errors, 'errors'); - } -} - -if ($dirins && $action == 'generatepackage') { - $modulelowercase = strtolower($module); - - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - // Dir for module - $dir = dol_buildpath($modulelowercase, 0); - - // Zip file to build - $FILENAMEZIP = ''; - - // Load module - dol_include_once($pathtofile); - $class = 'mod'.$module; - - if (class_exists($class)) { - try { - $moduleobj = new $class($db); - } catch (Exception $e) { - $error++; - dol_print_error($db, $e->getMessage()); - } - } else { - $error++; - $langs->load("errors"); - dol_print_error($db, $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module)); - exit; - } - - $arrayversion = explode('.', $moduleobj->version, 3); - if (count($arrayversion)) { - $FILENAMEZIP = "module_".$modulelowercase.'-'.$arrayversion[0].(empty($arrayversion[1]) ? '.0' : '.'.$arrayversion[1]).(empty($arrayversion[2]) ? '' : '.'.$arrayversion[2]).'.zip'; - - $dirofmodule = dol_buildpath($modulelowercase, 0).'/bin'; - $outputfilezip = $dirofmodule.'/'.$FILENAMEZIP; - if ($dirofmodule) { - if (!dol_is_dir($dirofmodule)) { - dol_mkdir($dirofmodule); - } - // Note: We exclude /bin/ to not include the already generated zip - $result = dol_compress_dir($dir, $outputfilezip, 'zip', '/\/bin\/|\.git|\.old|\.back|\.ssh/', $modulelowercase); - } else { - $result = -1; - } - - if ($result > 0) { - setEventMessages($langs->trans("ZipFileGeneratedInto", $outputfilezip), null); - } else { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToGenerateFile", $outputfilezip), null, 'errors'); - } - } else { - $error++; - $langs->load("errors"); - setEventMessages($langs->trans("ErrorCheckVersionIsDefined"), null, 'errors'); - } -} - - -// Save file -if ($action == 'savefile' && empty($cancel)) { - $relofcustom = basename($dirins); - - if ($relofcustom) { - // Check that relative path ($file) start with name 'custom' - if (!preg_match('/^'.$relofcustom.'/', $file)) { - $file = $relofcustom.'/'.$file; - } - - $pathoffile = dol_buildpath($file, 0); - $pathoffilebackup = dol_buildpath($file.'.back', 0); - - // Save old version - if (dol_is_file($pathoffile)) { - dol_copy($pathoffile, $pathoffilebackup, 0, 1); - } - - $check = 'restricthtml'; - $srclang = dol_mimetype($pathoffile, '', 3); - if ($srclang == 'md') { - $check = 'restricthtml'; - } - if ($srclang == 'lang') { - $check = 'restricthtml'; - } - if ($srclang == 'php') { - $check = 'none'; - } - - $content = GETPOST('editfilecontent', $check); - - // Save file on disk - if ($content) { - dol_delete_file($pathoffile); - $result = file_put_contents($pathoffile, $content); - if ($result) { - @chmod($pathoffile, octdec($newmask)); - - setEventMessages($langs->trans("FileSaved"), null); - } else { - setEventMessages($langs->trans("ErrorFailedToSaveFile"), null, 'errors'); - } - } else { - setEventMessages($langs->trans("ContentCantBeEmpty"), null, 'errors'); - //$action='editfile'; - $error++; - } - } -} - -// Enable module -if ($action == 'set' && $user->admin) { - $param = ''; - if ($module) { - $param .= '&module='.urlencode($module); - } - if ($tab) { - $param .= '&tab='.urlencode($tab); - } - if ($tabobj) { - $param .= '&tabobj='.urlencode($tabobj); - } - - $value = GETPOST('value', 'alpha'); - $resarray = activateModule($value); - if (!empty($resarray['errors'])) { - setEventMessages('', $resarray['errors'], 'errors'); - } else { - //var_dump($resarray);exit; - if ($resarray['nbperms'] > 0) { - $tmpsql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX."user WHERE admin <> 1"; - $resqltmp = $db->query($tmpsql); - if ($resqltmp) { - $obj = $db->fetch_object($resqltmp); - //var_dump($obj->nb);exit; - if ($obj && $obj->nb > 1) { - $msg = $langs->trans('ModuleEnabledAdminMustCheckRights'); - setEventMessages($msg, null, 'warnings'); - } - } else { - dol_print_error($db); - } - } - } - header("Location: ".$_SERVER["PHP_SELF"]."?".$param); - exit; -} - -// Disable module -if ($action == 'reset' && $user->admin) { - $param = ''; - if ($module) { - $param .= '&module='.urlencode($module); - } - if ($tab) { - $param .= '&tab='.urlencode($tab); - } - if ($tabobj) { - $param .= '&tabobj='.urlencode($tabobj); - } - - $value = GETPOST('value', 'alpha'); - $result = unActivateModule($value); - if ($result) { - setEventMessages($result, null, 'errors'); - } - header("Location: ".$_SERVER["PHP_SELF"]."?".$param); - exit; -} - - - -/* - * View - */ - -$form = new Form($db); -$formadmin = new FormAdmin($db); - -// Set dir where external modules are installed -if (!dol_is_dir($dirins)) { - dol_mkdir($dirins); -} -$dirins_ok = (dol_is_dir($dirins)); - -$help_url = ''; -$morejs = array( - '/includes/ace/src/ace.js', - '/includes/ace/src/ext-statusbar.js', - '/includes/ace/src/ext-language_tools.js', - //'/includes/ace/src/ext-chromevox.js' -); -$morecss = array(); - -llxHeader('', $langs->trans("ModuleBuilder"), $help_url, '', 0, 0, $morejs, $morecss, '', 'classforhorizontalscrolloftabs'); - - -$text = $langs->trans("ModuleBuilder"); - -print load_fiche_titre($text, '', 'title_setup'); - -print ''.$langs->trans("ModuleBuilderDesc", 'https://wiki.dolibarr.org/index.php/Module_development#Create_your_module').''; -print '
    '; - -//print $textforlistofdirs; -//print '
    '; -//var_dump($listofmodules); - - -$message = ''; -if (!$dirins) { - $message = info_admin($langs->trans("ConfFileMustContainCustom", DOL_DOCUMENT_ROOT.'/custom', DOL_DOCUMENT_ROOT)); - $allowfromweb = -1; -} else { - if ($dirins_ok) { - if (!is_writable(dol_osencode($dirins))) { - $langs->load("errors"); - $message = info_admin($langs->trans("ErrorFailedToWriteInDir", $dirins)); - $allowfromweb = 0; - } - } else { - $message = info_admin($langs->trans("NotExistsDirect", $dirins).$langs->trans("InfDirAlt").$langs->trans("InfDirExample")); - $allowfromweb = 0; - } -} -if ($message) { - print $message; -} - -//print $langs->trans("ModuleBuilderDesc3", count($listofmodules), $FILEFLAG).'
    '; -$infomodulesfound = '
    '.$form->textwithpicto('', $langs->trans("ModuleBuilderDesc3", count($listofmodules)).'

    '.$langs->trans("ModuleBuilderDesc4", $FILEFLAG).'
    '.$textforlistofdirs).'
    '; - - - -$dolibarrdataroot = preg_replace('/([\\/]+)$/i', '', DOL_DATA_ROOT); -$allowonlineinstall = true; -if (dol_is_file($dolibarrdataroot.'/installmodules.lock')) { - $allowonlineinstall = false; -} -if (empty($allowonlineinstall)) { - if (getDolGlobalString('MAIN_MESSAGE_INSTALL_MODULES_DISABLED_CONTACT_US')) { - // Show clean message - $message = info_admin($langs->trans('InstallModuleFromWebHasBeenDisabledContactUs')); - } else { - // Show technical message - $message = info_admin($langs->trans("InstallModuleFromWebHasBeenDisabledByFile", $dolibarrdataroot.'/installmodules.lock'), 0, 0, 1, 'warning'); - } - - print $message; - - llxFooter(); - exit(0); -} - - -// Load module descriptor -$error = 0; -$moduleobj = null; - - -if (!empty($module) && $module != 'initmodule' && $module != 'deletemodule') { - $modulelowercase = strtolower($module); - $loadclasserrormessage = ''; - - // Load module - try { - $fullpathdirtodescriptor = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - //throw(new Exception()); - dol_include_once($fullpathdirtodescriptor); - - $class = 'mod'.$module; - } catch (Throwable $e) { // This is called in PHP 7 only. Never called with PHP 5.6 - $loadclasserrormessage = $e->getMessage()."
    \n"; - $loadclasserrormessage .= 'File: '.$e->getFile()."
    \n"; - $loadclasserrormessage .= 'Line: '.$e->getLine()."
    \n"; - } catch (Exception $e) { - $loadclasserrormessage = $e->getMessage()."
    \n"; - $loadclasserrormessage .= 'File: '.$e->getFile()."
    \n"; - $loadclasserrormessage .= 'Line: '.$e->getLine()."
    \n"; - } - - if (class_exists($class)) { - try { - $moduleobj = new $class($db); - } catch (Exception $e) { - $error++; - print $e->getMessage(); - } - } else { - if (empty($forceddirread)) { - $error++; - } - $langs->load("errors"); - print ''; - print img_warning('').' '.$langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module).'
    '; - print $loadclasserrormessage; - } -} - -print '
    '; - - -// Tabs for all modules -$head = array(); -$h = 0; - -$head[$h][0] = $_SERVER["PHP_SELF"].'?module=initmodule'; -$head[$h][1] = ''.$langs->trans("NewModule").''; -$head[$h][2] = 'initmodule'; -$h++; - -$linktoenabledisable = ''; - -if (is_array($listofmodules) && count($listofmodules) > 0) { - // Define $linktoenabledisable - $modulelowercase = strtolower($module); - $const_name = 'MAIN_MODULE_'.strtoupper($module); - - $param = ''; - if ($tab) { - $param .= '&tab='.urlencode($tab); - } - if ($module) { - $param .= '&module='.urlencode($module); - } - if ($tabobj) { - $param .= '&tabobj='.urlencode($tabobj); - } - - $urltomodulesetup = ''.$langs->trans('Home').'-'.$langs->trans("Setup").'-'.$langs->trans("Modules").''; - - // Define $linktoenabledisable to show after module title - if (isModEnabled($modulelowercase)) { // If module is already activated - $linktoenabledisable .= ''; - $linktoenabledisable .= img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', '', 1); - $linktoenabledisable .= ''; - - $linktoenabledisable .= $form->textwithpicto('', $langs->trans("Warning").' : '.$langs->trans("ModuleIsLive"), -1, 'warning'); - - $objMod = $moduleobj; - $backtourlparam = ''; - $backtourlparam .= ($backtourlparam ? '&' : '?').'module='.$module; // No urlencode here, done later - if ($tab) { - $backtourlparam .= ($backtourlparam ? '&' : '?').'tab='.$tab; // No urlencode here, done later - } - $backtourl = $_SERVER["PHP_SELF"].$backtourlparam; - - $regs = array(); - if (is_array($objMod->config_page_url)) { - $i = 0; - foreach ($objMod->config_page_url as $page) { - $urlpage = $page; - if ($i++) { - $linktoenabledisable .= ' '.img_picto(ucfirst($page), "setup").''; - // print ''.ucfirst($page).' '; - } else { - if (preg_match('/^([^@]+)@([^@]+)$/i', $urlpage, $regs)) { - $urltouse = dol_buildpath('/'.$regs[2].'/admin/'.$regs[1], 1); - $linktoenabledisable .= ' '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 8px"').''; - } else { - // Case standard admin page (not a page provided by the - // module but a page provided by dolibarr) - $urltouse = DOL_URL_ROOT.'/admin/'.$urlpage; - $linktoenabledisable .= ' '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 8px"').''; - } - } - } - } elseif (preg_match('/^([^@]+)@([^@]+)$/i', $objMod->config_page_url, $regs)) { - $linktoenabledisable .= '   '.img_picto($langs->trans("Setup"), "setup", 'style="padding-right: 8px"').''; - } - } else { - if (!empty($moduleobj)) { - $linktoenabledisable .= ''; - $linktoenabledisable .= img_picto($langs->trans("ModuleIsNotActive", $urltomodulesetup), 'switch_off', 'style="padding-right: 8px"', false, 0, 0, '', 'classfortooltip', 1); - $linktoenabledisable .= "\n"; - } - } - - // Loop to show tab of each module - foreach ($listofmodules as $tmpmodule => $tmpmodulearray) { - $head[$h][0] = $_SERVER["PHP_SELF"].'?module='.$tmpmodulearray['modulenamewithcase'].($forceddirread ? '@'.$dirread : ''); - $head[$h][1] = $tmpmodulearray['modulenamewithcase']; - $head[$h][2] = $tmpmodulearray['modulenamewithcase']; - - if ($tmpmodulearray['modulenamewithcase'] == $module) { - $head[$h][4] = ''.$linktoenabledisable.''; - } - - $h++; - } -} - -$head[$h][0] = $_SERVER["PHP_SELF"].'?module=deletemodule'; -$head[$h][1] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("DangerZone"); -$head[$h][2] = 'deletemodule'; -$h++; - - -print dol_get_fiche_head($head, $module, '', -1, '', 0, $infomodulesfound, '', 8); // Modules - -if ($module == 'initmodule') { - // New module - print '
    '; - print ''; - print ''; - print ''; - - //print ''.$langs->trans("ModuleBuilderDesc2", 'conf/conf.php', $newdircustom).'
    '; - print '
    '; - - print '
    '; - - print '
    '; - print ''.$langs->trans("IdModule").''; - print '
    '; - print ''; - print ''; - print '   ('; - print dolButtonToOpenUrlInDialogPopup('popup_modules_id', $langs->transnoentitiesnoconv("SeeIDsInUse"), $langs->transnoentitiesnoconv("SeeIDsInUse"), '/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', '', ''); - print ' - '; - print ''.$langs->trans("SeeReservedIDsRangeHere").''; - print ')'; - print ''; - print '
    '; - - print '
    '; - print ''.$langs->trans("ModuleName").''; - print '
    '; - print ''; - print ' '.$form->textwithpicto('', $langs->trans("EnterNameOfModuleDesc")); - print '
    '; - - print '
    '; - print ''.$langs->trans("Description").''; - print '
    '; - print '
    '; - print '
    '; - - print '
    '; - print ''.$langs->trans("Version").''; - print '
    '; - print ''; - print '
    '; - - print '
    '; - print ''.$langs->trans("Family").''; - print '
    '; - print ''; - print ajax_combobox("family"); - print '
    '; - - print '
    '; - print ''.$langs->trans("Picto").''; - print '
    '; - print ''; - print $form->textwithpicto('', $langs->trans("Example").': fa-generic, fa-globe, ... any font awesome code.
    Advanced syntax is fa-fakey[_faprefix[_facolor[_fasize]]]'); - print '
    '; - - print '
    '; - print ''.$langs->trans("EditorName").''; - print '
    '; - print '
    '; - print '
    '; - - print '
    '; - print ''.$langs->trans("EditorUrl").''; - print '
    '; - print '
    '; - print '
    '; - - print '
    '; - print ''; -} elseif ($module == 'deletemodule') { - print ''."\n"; - print '
    '; - print ''; - print ''; - print ''; - - print $langs->trans("EnterNameOfModuleToDeleteDesc").'

    '; - - print ''; - print ''; - print '
    '; -} elseif (!empty($module)) { - // Tabs for module - if (!$error) { - $dirread = $listofmodules[strtolower($module)]['moduledescriptorrootpath']; - - $head2 = array(); - $h = 0; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=description&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Description"); - $head2[$h][2] = 'description'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Objects"); - $head2[$h][2] = 'objects'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=languages&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Languages"); - $head2[$h][2] = 'languages'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=dictionaries&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Dictionaries"); - $head2[$h][2] = 'dictionaries'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=permissions&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Permissions"); - $head2[$h][2] = 'permissions'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=tabs&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Tabs"); - $head2[$h][2] = 'tabs'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=menus&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Menus"); - $head2[$h][2] = 'menus'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=hooks&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Hooks"); - $head2[$h][2] = 'hooks'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=triggers&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Triggers"); - $head2[$h][2] = 'triggers'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=widgets&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Widgets"); - $head2[$h][2] = 'widgets'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=exportimport&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Export").'-'.$langs->trans("Import"); - $head2[$h][2] = 'exportimport'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=css&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("CSS"); - $head2[$h][2] = 'css'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=js&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("JS"); - $head2[$h][2] = 'js'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=cli&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("CLI"); - $head2[$h][2] = 'cli'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=cron&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("CronList"); - $head2[$h][2] = 'cron'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=specifications&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("Documentation"); - $head2[$h][2] = 'specifications'; - $h++; - - $head2[$h][0] = $_SERVER["PHP_SELF"].'?tab=buildpackage&module='.$module.($forceddirread ? '@'.$dirread : ''); - $head2[$h][1] = $langs->trans("BuildPackage"); - $head2[$h][2] = 'buildpackage'; - $h++; - - $MAXTABFOROBJECT = 15; - - print ''; - - // Note module is inside $dirread - - if ($tab == 'description') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - $pathtofilereadme = $modulelowercase.'/README.md'; - $pathtochangelog = $modulelowercase.'/ChangeLog.md'; - - if ($action != 'editfile' || empty($file)) { - print dol_get_fiche_head($head2, $tab, '', -1, '', 0, '', '', $MAXTABFOROBJECT, 'formodulesuffix'); // Description - level 2 - - print ''.$langs->trans("ModuleBuilderDesc".$tab).''; - $infoonmodulepath = ''; - if (realpath($dirread.'/'.$modulelowercase) != $dirread.'/'.$modulelowercase) { - $infoonmodulepath = ''.$langs->trans("RealPathOfModule").' : '.realpath($dirread.'/'.$modulelowercase).'
    '; - print ' '.$infoonmodulepath; - } - print '
    '; - - print ''; - - print ''; - - print ''; - - print ''; - - print '
    '; - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '.$langs->trans("ReadmeFile").' : '.$pathtofilereadme.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '.$langs->trans("ChangeLog").' : '.$pathtochangelog.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - print '
    '; - - print load_fiche_titre($form->textwithpicto($langs->trans("DescriptorFile"), $langs->transnoentitiesnoconv("File").' '.$pathtofile), '', ''); - - if (!empty($moduleobj)) { - print '
    '; - print '
    '; - - print ''; - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print '
    '; - print $langs->trans("Parameter"); - print ''; - print $langs->trans("Value"); - print '
    '; - print $langs->trans("IdModule"); - print ''; - print $moduleobj->numero; - print ''; - print '   ('.$langs->trans("SeeIDsInUse").''; - print ' - '.$langs->trans("SeeReservedIDsRangeHere").')'; - print ''; - print '
    '; - print $langs->trans("ModuleName"); - print ''; - print $moduleobj->getName(); - print '
    '; - print $langs->trans("Description"); - print ''; - print $moduleobj->getDesc(); - print '
    '; - print $langs->trans("Version"); - print ''; - print $moduleobj->getVersion(); - print '
    '; - print $langs->trans("Family"); - //print "
    'crm','financial','hr','projects','products','ecm','technic','interface','other'"; - print '
    '; - print $moduleobj->family; - print '
    '; - print $langs->trans("Picto"); - print ''; - print $moduleobj->picto; - print '   '.img_picto('', $moduleobj->picto, 'class="valignmiddle pictomodule paddingrightonly"'); - print '
    '; - print $langs->trans("EditorName"); - print ''; - print $moduleobj->editor_name; - print '
    '; - print $langs->trans("EditorUrl"); - print ''; - if (!empty($moduleobj->editor_url)) { - print ''.$moduleobj->editor_url.' '.img_picto('', 'globe').''; - } - print '
    '; - } else { - print $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module).'
    '; - } - - if (!empty($moduleobj)) { - print '

    '; - - // Readme file - print load_fiche_titre($form->textwithpicto($langs->trans("ReadmeFile"), $langs->transnoentitiesnoconv("File").' '.$pathtofilereadme), '', ''); - - print ''; - if (dol_is_file($dirread.'/'.$pathtofilereadme)) { - print '
    '.$moduleobj->getDescLong().'
    '; - } else { - print ''.$langs->trans("ErrorFileNotFound", $pathtofilereadme).''; - } - - print '

    '; - - // ChangeLog - print load_fiche_titre($form->textwithpicto($langs->trans("ChangeLog"), $langs->transnoentitiesnoconv("File").' '.$pathtochangelog), '', ''); - - print ''; - if (dol_is_file($dirread.'/'.$pathtochangelog)) { - print '
    '.$moduleobj->getChangeLog().'
    '; - } else { - print ''.$langs->trans("ErrorFileNotFound", $pathtochangelog).''; - } - } - - print dol_get_fiche_end(); - } else { // Edit text file - $fullpathoffile = dol_buildpath($file, 0, 1); // Description - level 2 - - if ($fullpathoffile) { - $content = file_get_contents($fullpathoffile); - } - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print dol_get_fiche_head($head2, $tab, '', -1, '', 0, '', '', 0, 'formodulesuffix'); - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%', ''); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - - print dol_get_fiche_end(); - - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } else { - print dol_get_fiche_head($head2, $tab, '', -1, '', 0, '', '', $MAXTABFOROBJECT, 'formodulesuffix'); // Level 2 - } - - if ($tab == 'languages') { - print ''."\n"; - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("LanguageDefDesc").'
    '; - print '
    '; - - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT, 'newlangcode', 0, 0, 1, 0, 0, 'minwidth300', 1); - print '
    '; - print '
    '; - - print '
    '; - print '
    '; - - $modulelowercase = strtolower($module); - - // Dir for module - $diroflang = dol_buildpath($modulelowercase, 0); - $diroflang .= '/langs'; - $langfiles = dol_dir_list($diroflang, 'files', 1, '\.lang$'); - - if (!preg_match('/custom/', $dirread)) { - // If this is not a module into custom - $diroflang = $dirread; - $diroflang .= '/langs'; - $langfiles = dol_dir_list($diroflang, 'files', 1, $modulelowercase.'\.lang$'); - } - - print ''; - foreach ($langfiles as $langfile) { - $pathtofile = $modulelowercase.'/langs/'.$langfile['relativename']; - if (!preg_match('/custom/', $dirread)) { // If this is not a module into custom - $pathtofile = 'langs/'.$langfile['relativename']; - } - print ''; - } - print '
    '.$langs->trans("LanguageFile").' '.basename(dirname($pathtofile)).' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - print '
    '; - } else { - // Edit text language file - - //print $langs->trans("UseAsciiDocFormat").'
    '; - - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'text')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'objects') { - print ''."\n"; - $head3 = array(); - $h = 0; - - // Dir for module - $dir = $dirread.'/'.$modulelowercase.'/class'; - - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj=newobject'; - $head3[$h][1] = ''.$langs->trans("NewObjectInModulebuilder").''; - $head3[$h][2] = 'newobject'; - $h++; - - // Scan for object class files - $listofobject = dol_dir_list($dir, 'files', 0, '\.class\.php$'); - - $firstobjectname = ''; - foreach ($listofobject as $fileobj) { - if (preg_match('/^api_/', $fileobj['name'])) { - continue; - } - if (preg_match('/^actions_/', $fileobj['name'])) { - continue; - } - - $tmpcontent = file_get_contents($fileobj['fullname']); - if (preg_match('/class\s+([^\s]*)\s+extends\s+CommonObject/ims', $tmpcontent, $reg)) { - //$objectname = preg_replace('/\.txt$/', '', $fileobj['name']); - $objectname = $reg[1]; - if (empty($firstobjectname)) { - $firstobjectname = $objectname; - } - - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname; - $head3[$h][1] = $objectname; - $head3[$h][2] = $objectname; - $h++; - } - } - - if ($h > 1) { - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj=deleteobject'; - $head3[$h][1] =img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("DangerZone"); - $head3[$h][2] = 'deleteobject'; - $h++; - } - - // If tabobj was not defined, then we check if there is one obj. If yes, we force on it, if no, we will show tab to create new objects. - if ($tabobj == 'newobjectifnoobj') { - if ($firstobjectname) { - $tabobj = $firstobjectname; - } else { - $tabobj = 'newobject'; - } - } - - print dol_get_fiche_head($head3, $tabobj, '', -1, ''); // Level 3 - - if ($tabobj == 'newobject') { - // New object tab - print '
    '; - print ''; - print ''; - print ''; - print ''; - - print ''.$langs->trans("EnterNameOfObjectDesc").'

    '; - - print '
    '; - - print '
    '; - print ''.$langs->trans("ObjectKey").'   '; - print '
    '; - print '
    '; - print '
    '; - - print '
    '; - print ''.$langs->trans("Picto").'   '; - print '
    '; - print ''; - print $form->textwithpicto('', $langs->trans("Example").': fa-generic, fa-globe, ... any font awesome code.
    Advanced syntax is fa-fakey[_faprefix[_facolor[_fasize]]]'); - print '
    '; - - print '
    '; - print ''.$langs->trans("DefinePropertiesFromExistingTable").'   '; - print '
    '; - print ''; - print $form->textwithpicto('', $langs->trans("DefinePropertiesFromExistingTableDesc").'
    '.$langs->trans("DefinePropertiesFromExistingTableDesc2")); - print '
    '; - - print '
    '; - - print '
    '; - print '
    '; - print '
    '; - print '
    '; - print ''; - print '
    '; - print '
    '; - /* - print '
    '; - print ''.$langs->trans("or").''; - print '
    '; - print '
    '; - //print ' '; - print $langs->trans("InitStructureFromExistingTable"); - print ''; - print ''; - print '
    '; - */ - - print '
    '; - } elseif ($tabobj == 'deleteobject') { - // Delete object tab - print '
    '; - print ''; - print ''; - print ''; - print ''; - - print $langs->trans("EnterNameOfObjectToDeleteDesc").'

    '; - - print ''; - print ''; - print '
    '; - } else { - // tabobj = module - if ($action == 'deleteproperty') { - $formconfirm = $form->formconfirm( - $_SERVER["PHP_SELF"].'?propertykey='.urlencode(GETPOST('propertykey', 'alpha')).'&objectname='.urlencode($objectname).'&tab='.urlencode($tab).'&module='.urlencode($module).'&tabobj='.urlencode($tabobj), - $langs->trans('Delete'), - $langs->trans('ConfirmDeleteProperty', GETPOST('propertykey', 'alpha')), - 'confirm_deleteproperty', - '', - 0, - 1 - ); - - // Print form confirm - print $formconfirm; - } - - if ($action != 'editfile' || empty($file)) { - try { - //$pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $pathtoclass = strtolower($module).'/class/'.strtolower($tabobj).'.class.php'; - $pathtoapi = strtolower($module).'/class/api_'.strtolower($module).'.class.php'; - $pathtoagenda = strtolower($module).'/'.strtolower($tabobj).'_agenda.php'; - $pathtocard = strtolower($module).'/'.strtolower($tabobj).'_card.php'; - $pathtodocument = strtolower($module).'/'.strtolower($tabobj).'_document.php'; - $pathtolist = strtolower($module).'/'.strtolower($tabobj).'_list.php'; - $pathtonote = strtolower($module).'/'.strtolower($tabobj).'_note.php'; - $pathtocontact = strtolower($module).'/'.strtolower($tabobj).'_contact.php'; - $pathtophpunit = strtolower($module).'/test/phpunit/'.strtolower($tabobj).'Test.php'; - - // Try to load object class file - clearstatcache(true); - if (function_exists('opcache_invalidate')) { - opcache_invalidate($dirread.'/'.$pathtoclass, true); // remove the include cache hell ! - } - - if (empty($forceddirread) && empty($dirread)) { - $result = dol_include_once($pathtoclass); - $stringofinclude = "dol_include_once(".$pathtoclass.")"; - } else { - $result = @include_once $dirread.'/'.$pathtoclass; - $stringofinclude = "@include_once ".$dirread.'/'.$pathtoclass; - } - if (class_exists($tabobj)) { - try { - $tmpobject = @new $tabobj($db); - } catch (Exception $e) { - dol_syslog('Failed to load Constructor of class: '.$e->getMessage(), LOG_WARNING); - } - } else { - print ''.$langs->trans('Failed to find the class '.$tabobj.' despite the '.$stringofinclude).'

    '; - } - - // Define path for sql file - $pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql'; - $result = dol_buildpath($pathtosql); - if (! dol_is_file($result)) { - $pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.sql'; - $result = dol_buildpath($pathtosql); - if (! dol_is_file($result)) { - $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql'; - $result = dol_buildpath($pathtosql); - if (! dol_is_file($result)) { - $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'-'.strtolower($module).'.sql'; - $result = dol_buildpath($pathtosql); - if (! dol_is_file($result)) { - $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'.sql'; - $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields.sql'; - $result = dol_buildpath($pathtosql); - } else { - $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields-'.strtolower($module).'.sql'; - } - } else { - $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql'; - } - } else { - $pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.sql'; - } - } else { - $pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql'; - } - $pathtosqlroot = preg_replace('/\/llx_.*$/', '', $pathtosql); - - $pathtosqlkey = preg_replace('/\.sql$/', '.key.sql', $pathtosql); - $pathtosqlextrakey = preg_replace('/\.sql$/', '.key.sql', $pathtosqlextra); - - $pathtolib = strtolower($module).'/lib/'.strtolower($module).'.lib.php'; - $pathtoobjlib = strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($tabobj).'.lib.php'; - $pathtopicto = strtolower($module).'/img/object_'.strtolower($tabobj).'.png'; - - //var_dump($pathtoclass); - //var_dump($dirread); - $realpathtoclass = $dirread.'/'.$pathtoclass; - $realpathtoapi = $dirread.'/'.$pathtoapi; - $realpathtoagenda = $dirread.'/'.$pathtoagenda; - $realpathtocard = $dirread.'/'.$pathtocard; - $realpathtodocument = $dirread.'/'.$pathtodocument; - $realpathtolist = $dirread.'/'.$pathtolist; - $realpathtonote = $dirread.'/'.$pathtonote; - $realpathtocontact = $dirread.'/'.$pathtocontact; - $realpathtophpunit = $dirread.'/'.$pathtophpunit; - $realpathtosql = $dirread.'/'.$pathtosql; - $realpathtosqlextra = $dirread.'/'.$pathtosqlextra; - $realpathtosqlkey = $dirread.'/'.$pathtosqlkey; - $realpathtosqlextrakey = $dirread.'/'.$pathtosqlextrakey; - $realpathtolib = $dirread.'/'.$pathtolib; - $realpathtoobjlib = $dirread.'/'.$pathtoobjlib; - $realpathtopicto = $dirread.'/'.$pathtopicto; - - if (empty($realpathtoapi)) { // For compatibility with some old modules - $pathtoapi = strtolower($module).'/class/api_'.strtolower($module).'s.class.php'; - $realpathtoapi = $dirread.'/'.$pathtoapi; - } - - $urloflist = dol_buildpath('/'.$pathtolist, 1); - $urlofcard = dol_buildpath('/'.$pathtocard, 1); - - - print ''; - print '
    '; - // Main DAO class file - print ' '.$langs->trans("ClassFile").' : '.(dol_is_file($realpathtoclass) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtoclass).(dol_is_file($realpathtoclass) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - // Image - if (dol_is_file($realpathtopicto)) { - print ' '.$langs->trans("Image").' : '.(dol_is_file($realpathtopicto) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtopicto).(dol_is_file($realpathtopicto) ? '' : '').''; - //print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - } elseif (!empty($tmpobject)) { - print ' '.$langs->trans("Image").' : '.img_picto('', $tmpobject->picto, 'class="pictofixedwidth"'); - print '
    '; - } - - // API file - print '
    '; - print ' '.$langs->trans("ApiClassFile").' : '.(dol_is_file($realpathtoapi) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtoapi).(dol_is_file($realpathtoapi)?'':'').''; - if (dol_is_file($realpathtoapi)) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - print '   '; - if (empty($conf->global->$const_name)) { // If module is not activated - print ''.$langs->trans("ApiExplorer").''; - } else { - print ''.$langs->trans("ApiExplorer").''; - } - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - // PHPUnit - print '
    '; - print ' '.$langs->trans("TestClassFile").' : '.(dol_is_file($realpathtophpunit) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtophpunit).(dol_is_file($realpathtophpunit)?'':'').''; - if (dol_is_file($realpathtophpunit)) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - - print '
    '; - - print ' '.$langs->trans("PageForLib").' : '.(dol_is_file($realpathtolib) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtolib).(dol_is_file($realpathtolib) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - print ' '.$langs->trans("PageForObjLib").' : '.(dol_is_file($realpathtoobjlib) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtoobjlib).(dol_is_file($realpathtoobjlib) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - - print '
    '; - print ' '.$langs->trans("SqlFile").' : '.(dol_is_file($realpathtosql) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtosql).(dol_is_file($realpathtosql) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '   '.$langs->trans("DropTableIfEmpty").''; - //print '   '.$langs->trans("RunSql").''; - print '
    '; - print ' '.$langs->trans("SqlFileKey").' : '.(dol_is_file($realpathtosqlkey) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtosqlkey).(dol_is_file($realpathtosqlkey) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - //print '   '.$langs->trans("RunSql").''; - print '
    '; - print ' '.$langs->trans("SqlFileExtraFields").' : '.(dol_is_file($realpathtosqlextra) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtosqlextra).(dol_is_file($realpathtosqlextra) && dol_is_file($realpathtosqlextrakey) ? '' : '').''; - if (dol_is_file($realpathtosqlextra) && dol_is_file($realpathtosqlextrakey)) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - print '   '; - print ''.$langs->trans("DropTableIfEmpty").''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - //print '   '.$langs->trans("RunSql").''; - print '
    '; - print ' '.$langs->trans("SqlFileKeyExtraFields").' : '.(dol_is_file($realpathtosqlextrakey) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtosqlextrakey).(dol_is_file($realpathtosqlextra) && dol_is_file($realpathtosqlextrakey) ? '' : '').''; - if (dol_is_file($realpathtosqlextra) && dol_is_file($realpathtosqlextrakey)) { - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - print '
    '; - - print '
    '; - print ' '.$langs->trans("PageForList").' : '.(dol_is_file($realpathtolist) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtolist).(dol_is_file($realpathtolist) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - print ' '.$langs->trans("PageForCreateEditView").' : '.(dol_is_file($realpathtocard) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtocard).(dol_is_file($realpathtocard) ? '' : '').'?action=create'; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - // Page contact - print ' '.$langs->trans("PageForContactTab").' : '.(dol_is_file($realpathtocontact) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtocontact).(dol_is_file($realpathtocontact) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - if (dol_is_file($realpathtocontact)) { - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - // Page document - print ' '.$langs->trans("PageForDocumentTab").' : '.(dol_is_file($realpathtodocument) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtodocument).(dol_is_file($realpathtodocument) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - if (dol_is_file($realpathtodocument)) { - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - // Page notes - print ' '.$langs->trans("PageForNoteTab").' : '.(dol_is_file($realpathtonote) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtonote).(dol_is_file($realpathtonote) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - if (dol_is_file($realpathtonote)) { - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - // Page agenda - print ' '.$langs->trans("PageForAgendaTab").' : '.(dol_is_file($realpathtoagenda) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtoagenda).(dol_is_file($realpathtoagenda) ? '' : '').''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - if (dol_is_file($realpathtoagenda)) { - print ' '; - print ''.img_picto($langs->trans("Delete"), 'delete').''; - } else { - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - } - print '
    '; - print '
    '; - - print '
    '; - - print '


    '; - - if (!empty($tmpobject)) { - $reflector = new ReflectionClass($tabobj); - $reflectorproperties = $reflector->getProperties(); // Can also use get_object_vars - $reflectorpropdefault = $reflector->getDefaultProperties(); // Can also use get_object_vars - //$propstat = $reflector->getStaticProperties(); - //var_dump($reflectorpropdefault); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - print ''; - print '

    '; - - print load_fiche_titre($langs->trans("ObjectProperties"), '', ''); - - print ''."\n"; - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - //print ''; - print ''; - print ''; - print ''; - print ''; - - // We must use $reflectorpropdefault['fields'] to get list of fields because $tmpobject->fields may have been - // modified during the constructor and we want value into head of class before constructor is called. - //$properties = dol_sort_array($tmpobject->fields, 'position'); - $properties = dol_sort_array($reflectorpropdefault['fields'], 'position'); - - if (!empty($properties)) { - // Line to add a property - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - //print ''; - print ''; - print ''; - print ''; - - // List of existing properties - foreach ($properties as $propkey => $propval) { - /* If from Reflection - if ($propval->class == $tabobj) - { - $propname=$propval->getName(); - $comment=$propval->getDocComment(); - $type=gettype($tmpobject->$propname); - $default=$propdefault[$propname]; - // Discard generic properties - if (in_array($propname, array('element', 'childtables', 'table_element', 'table_element_line', 'class_element_line', 'ismultientitymanaged'))) continue; - - // Keep or not lines - if (in_array($propname, array('fk_element', 'lines'))) continue; - }*/ - - $propname = $propkey; - $proplabel = $propval['label']; - $proptype = $propval['type']; - $proparrayofkeyval = !empty($propval['arrayofkeyval'])?$propval['arrayofkeyval']:''; - $propnotnull = !empty($propval['notnull']) ? $propval['notnull'] : '0'; - $propdefault = !empty($propval['default'])?$propval['default']:''; - $propindex = !empty($propval['index'])?$propval['index']:''; - $propforeignkey = !empty($propval['foreignkey'])?$propval['foreignkey']:''; - $propposition = $propval['position']; - $propenabled = $propval['enabled']; - $propvisible = $propval['visible']; - $propnoteditable = !empty($propval['noteditable'])?$propval['noteditable']:0; - $propalwayseditable = !empty($propval['alwayseditable'])?$propval['alwayseditable']:0; - $propsearchall = !empty($propval['searchall'])?$propval['searchall']:0; - $propisameasure = !empty($propval['isameasure'])?$propval['isameasure']:0; - $propcss = !empty($propval['css'])?$propval['css']:''; - $propcssview = !empty($propval['cssview'])?$propval['cssview']:''; - $propcsslist = !empty($propval['csslist'])?$propval['csslist']:''; - $prophelp = !empty($propval['help'])?$propval['help']:''; - $propshowoncombobox = !empty($propval['showoncombobox'])?$propval['showoncombobox']:0; - //$propdisabled=$propval['disabled']; - $propvalidate = !empty($propval['validate'])?$propval['validate']:0; - $propcomment = !empty($propval['comment'])?$propval['comment']:''; - - print ''; - - print ''; - print ''; - if ($action == 'editproperty' && $propname == $propertykey) { - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - } else { - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - // Visibility - print ''; - // Readonly - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - // Key for tooltop - print ''; - print ''; - /*print '';*/ - print ''; - print ''; - print ''; - } - print ''; - } - } else { - if ($tab == 'specifications') { - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("SpecDefDesc").'
    '; - print '
    '; - - $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); - - foreach ($specs as $spec) { - $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; - $format = 'asciidoc'; - if (preg_match('/\.md$/i', $spec['name'])) { - $format = 'markdown'; - } - print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - } - } else { - // Use MD or asciidoc - - //print $langs->trans("UseAsciiDocFormat").'
    '; - - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print ''; - } - } - print ''; - } - print '
    '; - - $htmltext = $langs->trans("PropertyDesc").'

    '.$langs->trans("SeeExamples").''; - print $form->textwithpicto($langs->trans("Code"), $htmltext, 1, 'help', 'extracss', 0, 3, 'propertyhelp'); - - print '
    '; - print $form->textwithpicto($langs->trans("Label"), $langs->trans("YouCanUseTranslationKey")); - print ''.$form->textwithpicto($langs->trans("Type"), $langs->trans("TypeOfFieldsHelpIntro").'

    '.$langs->trans("TypeOfFieldsHelp"), 1, 'help', 'extracss', 0, 3, 'typehelp').'
    '.$form->textwithpicto($langs->trans("ArrayOfKeyValues"), $langs->trans("ArrayOfKeyValuesDesc")).''.$form->textwithpicto($langs->trans("NotNull"), $langs->trans("NotNullDesc")).''.$langs->trans("DefaultValue").''.$langs->trans("DatabaseIndex").''.$form->textwithpicto($langs->trans("ForeignKey"), $langs->trans("ForeignKeyDesc"), 1, 'help', 'extracss', 0, 3, 'foreignkeyhelp').''.$langs->trans("Position").''.$form->textwithpicto($langs->trans("Enabled"), $langs->trans("EnabledDesc"), 1, 'help', 'extracss', 0, 3, 'enabledhelp').''.$form->textwithpicto($langs->trans("Visibility"), $langs->trans("VisibleDesc").'

    '.$langs->trans("ItCanBeAnExpression"), 1, 'help', 'extracss', 0, 3, 'visiblehelp').'
    '.$langs->trans("NotEditable").''.$langs->trans("AlwaysEditable").''.$form->textwithpicto($langs->trans("SearchAll"), $langs->trans("SearchAllDesc")).''.$form->textwithpicto($langs->trans("IsAMeasure"), $langs->trans("IsAMeasureDesc")).''.$langs->trans("CSSClass").''.$langs->trans("CSSViewClass").''.$langs->trans("CSSListClass").''.$langs->trans("KeyForTooltip").''.$langs->trans("ShowOnCombobox").''.$langs->trans("Disabled").''.$form->textwithpicto($langs->trans("Validate"), $langs->trans("ValidateModBuilderDesc")).''.$langs->trans("Comment").'
    '; - print ''; - print '
    '; - print dol_escape_htmltag($propname); - print ''; - print dol_escape_htmltag($proplabel); - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''.dol_escape_htmltag($proptype).''; - print ''; - if ($proparrayofkeyval) { - print ''; - print dol_escape_htmltag(json_encode($proparrayofkeyval, JSON_UNESCAPED_UNICODE)); - print ''; - } - print ''; - print dol_escape_htmltag($propnotnull); - print ''; - print dol_escape_htmltag($propdefault); - print ''; - print $propindex ? '1' : ''; - print ''; - print $propforeignkey ? dol_escape_htmltag($propforeignkey) : ''; - print ''; - print dol_escape_htmltag($propposition); - print ''; - print $propenabled ? dol_escape_htmltag($propenabled) : ''; - print ''; - print $propvisible ? dol_escape_htmltag($propvisible) : '0'; - print ''; - print $propnoteditable ? dol_escape_htmltag($propnoteditable) : ''; - print ''; - print $propalwayseditable ? dol_escape_htmltag($propalwayseditable) : ''; - print ''; - print $propsearchall ? '1' : ''; - print ''; - print $propisameasure ? dol_escape_htmltag($propisameasure) : ''; - print ''; - print $propcss ? dol_escape_htmltag($propcss) : ''; - print ''; - print $propcssview ? dol_escape_htmltag($propcssview) : ''; - print ''; - print $propcsslist ? dol_escape_htmltag($propcsslist) : ''; - print ''; - print $prophelp ? dol_escape_htmltag($prophelp) : ''; - print ''; - print $propshowoncombobox ? dol_escape_htmltag($propshowoncombobox) : ''; - print ''; - print $propdisabled?$propdisabled:''; - print ''; - print $propvalidate ? dol_escape_htmltag($propvalidate) : ''; - print ''; - print ''; - print dol_escape_htmltag($propcomment); - print ''; - print ''; - if ($propname != 'rowid') { - print ''.img_edit().''; - print ''.img_delete().''; - } - print '
    '.$langs->trans('Property $field not found into the class. The class was probably not generated by modulebuilder.').'
    '; - print '
    '; - - print ''; - } else { - print ''.$langs->trans('Failed to init the object with the new '.$tabobj.'($db)').''; - } - } catch (Exception $e) { - print $e->getMessage(); - } - } else { - if (empty($forceddirread)) { - $fullpathoffile = dol_buildpath($file, 0); - } else { - $fullpathoffile = $dirread.'/'.$file; - } - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - print dol_get_fiche_end(); // Level 3 - } - - if ($tab == 'dictionaries') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $dicts = $moduleobj->dictionaries; - - if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("DictionariesDefDescTooltip", '{s1}'); - $htmlhelp = str_replace('{s1}', ''.$langs->trans('Setup').' - '.$langs->trans('Dictionaries').'', $htmlhelp); - print $form->textwithpicto($langs->trans("DictionariesDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - if (is_array($dicts) && !empty($dicts)) { - print ' '.$langs->trans("LanguageFile").' :
    '; - print ''.$dicts['langs'].''; - print '
    '; - } - - print ''."\n"; - $head3 = array(); - $h = 0; - - // Dir for module - //$dir = $dirread.'/'.$modulelowercase.'/class'; - - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=dictionaries&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabdic=newdictionary'; - $head3[$h][1] = ''.$langs->trans("NewDictionary").''; - $head3[$h][2] = 'newdictionary'; - $h++; - - // Scan for object class files - //$listofobject = dol_dir_list($dir, 'files', 0, '\.class\.php$'); - - $firstdicname = ''; - if (!empty($dicts['tabname'])) { - foreach ($dicts['tabname'] as $key => $dic) { - $dicname = $dic; - $diclabel = $dicts['tablib'][$key]; - - if (empty($firstdicname)) { - $firstdicname = $dicname; - } - - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=dictionaries&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabdic='.$dicname; - $head3[$h][1] = $diclabel; - $head3[$h][2] = $dicname; - $h++; - } - } - - if ($h > 1) { - $head3[$h][0] = $_SERVER["PHP_SELF"].'?tab=dictionaries&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabdic=deletedictionary'; - $head3[$h][1] = $langs->trans("DangerZone"); - $head3[$h][2] = 'deletedictionary'; - $h++; - } - - // If tabobj was not defined, then we check if there is one obj. If yes, we force on it, if no, we will show tab to create new objects. - if ($tabdic == 'newdicifnodic') { - if ($firstdicname) { - $tabdic = $firstdicname; - } else { - $tabdic = 'newdictionary'; - } - } - - print load_fiche_titre($langs->trans("ListOfDictionariesEntries"), '', ''); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - - print ''; - print_liste_field_titre("#", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, 'thsticky thstickygrey '); - print_liste_field_titre("Table", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Label", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("SQL", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("SQLSort", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("FieldsView", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("FieldsEdit", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("FieldsInsert", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Rowid", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Condition", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print "\n"; - - if (!empty($dicts) && is_array($dicts) && !empty($dicts['tabname']) && is_array($dicts['tabname'])) { - $i = 0; - $maxi = count($dicts['tabname']); - while ($i < $maxi) { - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - $i++; - } - } else { - print ''; - } - - print '
    '; - print ($i + 1); - print ''; - print $dicts['tabname'][$i]; - print ''; - print $dicts['tablib'][$i]; - print ''; - print $dicts['tabsql'][$i]; - print ''; - print $dicts['tabsqlsort'][$i]; - print ''; - print $dicts['tabfield'][$i]; - print ''; - print $dicts['tabfieldvalue'][$i]; - print ''; - print $dicts['tabfieldinsert'][$i]; - print ''; - print $dicts['tabrowid'][$i]; - print ''; - print $dicts['tabcond'][$i]; - print '
    '.$langs->trans("None").'
    '; - print '
    '; - - print '
    '; - - print dol_get_fiche_head($head3, $tabdic, '', -1, ''); // Level 3 - - if ($tabdic == 'newdictionary') { - // New dic tab - print '
    '; - print ''; - print ''; - print ''; - print ''; - - print ''.$langs->trans("EnterNameOfDictionaryDesc").'

    '; - - print '
    '; - //print '
    '; - //print '
    '; - print ''; - /*print '
    '; - print '
    '; - print '
    '; - print ''.$langs->trans("or").''; - print '
    '; - print '
    '; - //print ' '; - print $langs->trans("InitStructureFromExistingTable"); - print ''; - print ''; - print '
    '; - */ - print '
    '; - } elseif ($tabdic == 'deletedictionary') { - // Delete dic tab - print '
    '; - print ''; - print ''; - print ''; - print ''; - - print $langs->trans("EnterNameOfObjectToDeleteDesc").'

    '; - - print ''; - print ''; - print '
    '; - } else { - print $langs->trans("FeatureNotYetAvailable"); - } - - print dol_get_fiche_end(); - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'menus') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $menus = $moduleobj->menu; - - if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("MenusDefDescTooltip", '{s1}'); - $htmlhelp = str_replace('{s1}', ''.$langs->trans('Setup').' - '.$langs->trans('Menus').'', $htmlhelp); - print $form->textwithpicto($langs->trans("MenusDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - - print '
    '; - print load_fiche_titre($langs->trans("ListOfMenusEntries"), '', ''); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - - print ''; - print_liste_field_titre("#", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, 'thsticky '); - print_liste_field_titre("Position", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("LinkToParentMenu", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Title", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("mainmenu", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("leftmenu", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("URL", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, '', $langs->transnoentitiesnoconv('DetailUrl')); - print_liste_field_titre("LanguageFile", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Position", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, 'right '); - print_liste_field_titre("Enabled", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, 'center ', $langs->trans('DetailEnabled')); - print_liste_field_titre("Rights", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, '', $langs->trans('DetailRight')); - print_liste_field_titre("Target", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, '', $langs->trans('DetailTarget')); - print_liste_field_titre("MenuForUsers", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder, 'right ', $langs->trans('DetailUser')); - print "\n"; - - if (count($menus)) { - $i = 0; - foreach ($menus as $menu) { - $i++; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - } - } else { - print ''; - } - - print '
    '; - print $i; - print ''; - print dol_escape_htmltag($menu['type']); - print ''; - print dol_escape_htmltag($menu['fk_menu']); - print ''; - print dol_escape_htmltag($menu['titre']); - print ''; - print dol_escape_htmltag($menu['mainmenu']); - print ''; - print dol_escape_htmltag($menu['leftmenu']); - print ''; - print dol_escape_htmltag($menu['url']); - print ''; - print dol_escape_htmltag($menu['langs']); - print ''; - print dol_escape_htmltag($menu['position']); - print ''; - print dol_escape_htmltag($menu['enabled']); - print ''; - print dol_escape_htmltag($menu['perms']); - print ''; - print dol_escape_htmltag($menu['target']); - print ''; - if ($menu['user'] == 2) { - print $langs->trans("AllMenus"); - } elseif ($menu['user'] == 0) { - print $langs->trans('Internal'); - } elseif ($menu['user'] == 1) { - print $langs->trans('External'); - } else { - print $menu['user']; // should not happen - } - print '
    '.$langs->trans("None").'
    '; - print '
    '; - - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'permissions') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $perms = $moduleobj->rights; - - if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("PermissionsDefDescTooltip", '{s1}'); - $htmlhelp = str_replace('{s1}', ''.$langs->trans('DefaultRights').'', $htmlhelp); - print $form->textwithpicto($langs->trans("PermissionsDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - - print '
    '; - print load_fiche_titre($langs->trans("ListOfPermissionsDefined"), '', ''); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - - print ''; - print_liste_field_titre("ID", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Label", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Permission", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print "\n"; - - if (count($perms)) { - foreach ($perms as $perm) { - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - } - } else { - print ''; - } - - print '
    '; - print $perm[0]; - print ''; - print $langs->trans($perm[1]); - print ''; - print $perm[4]; - print ''; - print $perm[5]; - print '
    '.$langs->trans("None").'
    '; - print '
    '; - - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'hooks') { - print ''."\n"; - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("HooksDefDesc").'
    '; - print '
    '; - - print ''; - - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - print ''; - - print ''; - print ''; - } else { - print ''.$langs->trans("FileNotYetGenerated").''; - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - print ''; - } - print ''; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print ''; - } - } - - if ($tab == 'triggers') { - print ''."\n"; - require_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; - - $interfaces = new Interfaces($db); - $triggers = $interfaces->getTriggersList(array('/'.strtolower($module).'/core/triggers')); - - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("TriggerDefDesc").'
    '; - print '
    '; - - print '
    '; - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - $pathtohook = strtolower($module).'/class/actions_'.strtolower($module).'.class.php'; - print ' '.$langs->trans("HooksFile").' : '; - if (dol_is_file($dirins.'/'.$pathtohook)) { - print ''.$pathtohook.''; - print ''.img_picto($langs->trans("Edit"), 'edit').' '; - print ''.img_picto($langs->trans("Delete"), 'delete').'
    '; - - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - print ''; - - if (!empty($triggers)) { - foreach ($triggers as $trigger) { - $pathtofile = $trigger['relpath']; - - print ''; - print ''; - print ''; - } - } else { - print ''; - print ''; - print ''; - } - - print '
    '; - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - print ' '.$langs->trans("TriggersFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; - print ' '.$langs->trans("TriggersFile"); - print ' : '.$langs->trans("FileNotYetGenerated").''; - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').'
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'css') { - print ''."\n"; - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("CSSDesc").'
    '; - print '
    '; - - print ''; - - print ''; - print ''; - } else { - print ''.$langs->trans("FileNotYetGenerated").''; - print ''; - } - print ''; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print ''; - } - } - - if ($tab == 'js') { - print ''."\n"; - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("JSDesc").'
    '; - print '
    '; - - print '
    '; - $pathtohook = strtolower($module).'/css/'.strtolower($module).'.css.php'; - print ' '.$langs->trans("CSSFile").' : '; - if (dol_is_file($dirins.'/'.$pathtohook)) { - print ''.$pathtohook.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').''.img_picto('Generate', 'generate', 'class="paddingleft"').'
    '; - - print ''; - print ''; - } else { - print ''.$langs->trans("FileNotYetGenerated").''; - print ''; - } - print ''; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print ''; - } - } - - if ($tab == 'widgets') { - print ''."\n"; - require_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; - - $widgets = ModeleBoxes::getWidgetsList(array('/'.strtolower($module).'/core/boxes')); - - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("WidgetDesc").'
    '; - print '
    '; - - print '
    '; - $pathtohook = strtolower($module).'/js/'.strtolower($module).'.js.php'; - print ' '.$langs->trans("JSFile").' : '; - if (dol_is_file($dirins.'/'.$pathtohook)) { - print ''.$pathtohook.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').''.img_picto('Generate', 'generate', 'class="paddingleft"').'
    '; - if (!empty($widgets)) { - foreach ($widgets as $widget) { - $pathtofile = $widget['relpath']; - - print ''; - print ''; - } - } else { - print ''; - } - print '
    '.$langs->trans("WidgetFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''; - print ''.img_picto($langs->trans("Delete"), 'delete').'
    '.$langs->trans("WidgetFile").' : '.$langs->trans("NoWidget").''; - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'exportimport') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $exportlist = $moduleobj->export_label; - $importlist = $moduleobj->import_label; - - if ($action != 'editfile' || empty($file)) { - print ''.$langs->transnoentities('ImportExportProfiles').'
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print '
    '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'cli') { - print ''."\n"; - $clifiles = array(); - $i = 0; - - $dircli = array('/'.strtolower($module).'/scripts'); - - foreach ($dircli as $reldir) { - $dir = dol_buildpath($reldir, 0); - $newdir = dol_osencode($dir); - - // Check if directory exists (we do not use dol_is_dir to avoid loading files.lib.php at each call) - if (!is_dir($newdir)) { - continue; - } - - $handle = opendir($newdir); - if (is_resource($handle)) { - while (($tmpfile = readdir($handle)) !== false) { - if (is_readable($newdir.'/'.$file) && preg_match('/^(.+)\.php/', $tmpfile, $reg)) { - if (preg_match('/\.back$/', $tmpfile)) { - continue; - } - - $clifiles[$i]['relpath'] = preg_replace('/^\//', '', $reldir).'/'.$tmpfile; - - $i++; - } - } - closedir($handle); - } - } - - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("CLIDesc").'
    '; - print '
    '; - - print ''; - if (!empty($clifiles)) { - foreach ($clifiles as $clifile) { - $pathtofile = $clifile['relpath']; - - print ''; - print ''; - print ''; - } - } else { - print ''; - } - print '
    '.$langs->trans("CLIFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '.$langs->trans("CLIFile").' : '.$langs->trans("FileNotYetGenerated"); ''; - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').''; - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'cron') { - print ''."\n"; - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $cronjobs = $moduleobj->cronjobs; - - if ($action != 'editfile' || empty($file)) { - print ''.str_replace('{s1}', ''.$langs->transnoentities('CronList').'', $langs->trans("CronJobDefDesc", '{s1}')).'
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - - print '
    '; - print load_fiche_titre($langs->trans("CronJobProfiles"), '', ''); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - - print ''; - print_liste_field_titre("CronLabel", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("CronTask", '', '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("CronFrequency", '', "", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("StatusAtInstall", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Comment", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder); - print "\n"; - - if (count($cronjobs)) { - foreach ($cronjobs as $cron) { - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - } - } else { - print ''; - } - - print '
    '; - print $cron['label']; - print ''; - if ($cron['jobtype'] == 'method') { - $text = $langs->trans("CronClass"); - $texttoshow = $langs->trans('CronModule').': '.$module.'
    '; - $texttoshow .= $langs->trans('CronClass').': '.$cron['class'].'
    '; - $texttoshow .= $langs->trans('CronObject').': '.$cron['objectname'].'
    '; - $texttoshow .= $langs->trans('CronMethod').': '.$cron['method']; - $texttoshow .= '
    '.$langs->trans('CronArgs').': '.$cron['parameters']; - $texttoshow .= '
    '.$langs->trans('Comment').': '.$langs->trans($cron['comment']); - } elseif ($cron['jobtype'] == 'command') { - $text = $langs->trans('CronCommand'); - $texttoshow = $langs->trans('CronCommand').': '.dol_trunc($cron['command']); - $texttoshow .= '
    '.$langs->trans('CronArgs').': '.$cron['parameters']; - $texttoshow .= '
    '.$langs->trans('Comment').': '.$langs->trans($cron['comment']); - } - print $form->textwithpicto($text, $texttoshow, 1); - print '
    '; - if ($cron['unitfrequency'] == "60") { - print $langs->trans('CronEach')." ".($cron['frequency'])." ".$langs->trans('Minutes'); - } - if ($cron['unitfrequency'] == "3600") { - print $langs->trans('CronEach')." ".($cron['frequency'])." ".$langs->trans('Hours'); - } - if ($cron['unitfrequency'] == "86400") { - print $langs->trans('CronEach')." ".($cron['frequency'])." ".$langs->trans('Days'); - } - if ($cron['unitfrequency'] == "604800") { - print $langs->trans('CronEach')." ".($cron['frequency'])." ".$langs->trans('Weeks'); - } - print ''; - print $cron['status']; - print ''; - if (!empty($cron['comment'])) { - print $cron['comment']; - } - print '
    '.$langs->trans("None").'
    '; - print '
    '; - - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab == 'specifications') { - print ''."\n"; - $specs = dol_dir_list(dol_buildpath($modulelowercase.'/doc', 0), 'files', 1, '(\.md|\.asciidoc)$', array('\/temp\/')); - - if ($action != 'editfile' || empty($file)) { - print ''.$langs->trans("SpecDefDesc").'
    '; - print '
    '; - - print ''; - if (is_array($specs) && !empty($specs)) { - foreach ($specs as $spec) { - $pathtofile = $modulelowercase.'/doc/'.$spec['relativename']; - $format = 'asciidoc'; - if (preg_match('/\.md$/i', $spec['name'])) { - $format = 'markdown'; - } - print ''; - print ''; - print ''; - } - } else { - print ''; - print ''; - } - print '
    '; - print ' '.$langs->trans("SpecificationFile").' : '.$pathtofile.''; - print ''.img_picto($langs->trans("Edit"), 'edit').''.img_picto($langs->trans("Delete"), 'delete').'
    '; - print ' '.$langs->trans("SpecificationFile").' : '.$langs->trans("FileNotYetGenerated").''; - print ''.img_picto('Generate', 'generate', 'class="paddingleft"').'
    '; - } else { - // Use MD or asciidoc - - //print $langs->trans("UseAsciiDocFormat").'
    '; - - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - - print '


    '; - - $FILENAMEDOC = $modulelowercase.'.html'; - $FILENAMEDOCPDF = $modulelowercase.'.pdf'; - $outputfiledoc = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOC; - $outputfiledocurl = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOC; - $outputfiledocrel = $modulelowercase.'/doc/'.$FILENAMEDOC; - $outputfiledocpdf = dol_buildpath($modulelowercase, 0).'/doc/'.$FILENAMEDOCPDF; - $outputfiledocurlpdf = dol_buildpath($modulelowercase, 1).'/doc/'.$FILENAMEDOCPDF; - $outputfiledocrelpdf = $modulelowercase.'/doc/'.$FILENAMEDOCPDF; - - // HTML - print ' '.$langs->trans("PathToModuleDocumentation", "HTML").' : '; - if (!dol_is_file($outputfiledoc)) { - print ''.$langs->trans("FileNotYetGenerated").''; - } else { - print ''; - print ''; - print $outputfiledoc; - print ''; - print ''; - print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledoc), 'dayhour').')'; - print ' '.img_picto($langs->trans("Delete"), 'delete').''; - } - print '

    '; - - // PDF - print ' '.$langs->trans("PathToModuleDocumentation", "PDF").' : '; - if (!dol_is_file($outputfiledocpdf)) { - print ''.$langs->trans("FileNotYetGenerated").''; - } else { - print ''; - print ''; - print $outputfiledocpdf; - print ''; - print ''; - print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfiledocpdf), 'dayhour').')'; - print ' '.img_picto($langs->trans("Delete"), 'delete').''; - } - print '
    '; - - print '
    '; - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print '
    '; - } - - if ($tab == 'buildpackage') { - print ''."\n"; - print ''.$langs->trans("BuildPackageDesc").''; - print '
    '; - - if (!class_exists('ZipArchive') && !defined('ODTPHP_PATHTOPCLZIP')) { - print img_warning().' '.$langs->trans("ErrNoZipEngine"); - print '
    '; - } - - $modulelowercase = strtolower($module); - - // Zip file to build - $FILENAMEZIP = ''; - - // Load module - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - dol_include_once($pathtofile); - $class = 'mod'.$module; - - if (class_exists($class)) { - try { - $moduleobj = new $class($db); - } catch (Exception $e) { - $error++; - dol_print_error($db, $e->getMessage()); - } - } else { - $error++; - $langs->load("errors"); - dol_print_error($db, $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module)); - exit; - } - - $arrayversion = explode('.', $moduleobj->version, 3); - if (count($arrayversion)) { - $FILENAMEZIP = "module_".$modulelowercase.'-'.$arrayversion[0].(empty($arrayversion[1]) ? '.0' : '.'.$arrayversion[1]).(empty($arrayversion[2]) ? '' : ".".$arrayversion[2]).".zip"; - $outputfilezip = dol_buildpath($modulelowercase, 0).'/bin/'.$FILENAMEZIP; - } - - print '
    '; - - print ' '.$langs->trans("PathToModulePackage").' : '; - if (!dol_is_file($outputfilezip)) { - print ''.$langs->trans("FileNotYetGenerated").''; - } else { - $relativepath = $modulelowercase.'/bin/'.$FILENAMEZIP; - print ''.$outputfilezip.''; - print ' ('.$langs->trans("GeneratedOn").' '.dol_print_date(dol_filemtime($outputfilezip), 'dayhour').')'; - print ' '.img_picto($langs->trans("Delete"), 'delete').''; - } - print ''; - - print '
    '; - - print '
    '; - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - print '
    '; - } - - if ($tab == 'tabs') { - $pathtofile = $listofmodules[strtolower($module)]['moduledescriptorrelpath']; - - $tabs = $moduleobj->tabs; - - if ($action != 'editfile' || empty($file)) { - print ''; - $htmlhelp = $langs->trans("TabsDefDescTooltip", '{s1}'); - $htmlhelp = str_replace('{s1}', ''.$langs->trans('Setup').' - '.$langs->trans('Tabs').'', $htmlhelp); - print $form->textwithpicto($langs->trans("TabsDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').'
    '; - print '
    '; - print '
    '; - - print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.''; - print ' '.img_picto($langs->trans("Edit"), 'edit').''; - print '
    '; - - print '
    '; - print load_fiche_titre($langs->trans("ListOfTabsEntries"), '', ''); - - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - print '
    '; - print ''; - - print ''; - print_liste_field_titre("ObjectType", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Tab", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Title", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("LangFile", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Condition", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("Path", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); - print "\n"; - - if (count($tabs)) { - foreach ($tabs as $tab) { - $parts = explode(':', $tab['data']); - - $objectType = $parts[0]; - $tabName = $parts[1]; - $tabTitle = isset($parts[2]) ? $parts[2] : ''; - $langFile = isset($parts[3]) ? $parts[3] : ''; - $condition = isset($parts[4]) ? $parts[4] : ''; - $path = isset($parts[5]) ? $parts[5] : ''; - - // If we want to remove the tab, then the format is 'objecttype:tabname:optionalcondition' - // See: https://wiki.dolibarr.org/index.php?title=Tabs_system#To_remove_an_existing_tab - if ($tabName[0] === '-') { - $tabTitle = ''; - $condition = isset($parts[2]) ? $parts[2] : ''; - } - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - - print ''; - } - } else { - print ''; - } - - print '
    '; - print dol_escape_htmltag($parts[0]); - print ''; - if ($tabName[0] === "+") { - print '' . dol_escape_htmltag($tabName) . ''; - } else { - print '' . dol_escape_htmltag($tabName) . ''; - } - print ''; - print dol_escape_htmltag($tabTitle); - print ''; - print dol_escape_htmltag($langFile); - print ''; - print dol_escape_htmltag($condition); - print ''; - print dol_escape_htmltag($path); - print '
    '.$langs->trans("None").'
    '; - print '
    '; - - print '
    '; - } else { - $fullpathoffile = dol_buildpath($file, 0); - - $content = file_get_contents($fullpathoffile); - - // New module - print '
    '; - print ''; - print ''; - print ''; - print ''; - print ''; - - $doleditor = new DolEditor('editfilecontent', $content, '', '300', 'Full', 'In', true, false, 'ace', 0, '99%'); - print $doleditor->Create(1, '', false, $langs->trans("File").' : '.$file, (GETPOST('format', 'aZ09') ?GETPOST('format', 'aZ09') : 'html')); - print '
    '; - print '
    '; - print ''; - print '   '; - print ''; - print '
    '; - - print '
    '; - } - } - - if ($tab != 'description') { - print dol_get_fiche_end(); - } - } -} - -print dol_get_fiche_end(); // End modules - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/ChangeLog.md b/htdocs/modulebuilder/template/ChangeLog.md deleted file mode 100644 index effcde14..00000000 --- a/htdocs/modulebuilder/template/ChangeLog.md +++ /dev/null @@ -1,5 +0,0 @@ -# CHANGELOG MYMODULE FOR [DOLIBARR ERP CRM](https://www.dolibarr.org) - -## 1.0 - -Initial version diff --git a/htdocs/modulebuilder/template/README.md b/htdocs/modulebuilder/template/README.md deleted file mode 100644 index 03cf25d7..00000000 --- a/htdocs/modulebuilder/template/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# MYMODULE FOR [DOLIBARR ERP CRM](https://www.dolibarr.org) - -## Features - -Description of the module... - - - -Other external modules are available on [Dolistore.com](https://www.dolistore.com). - -## Translations - -Translations can be completed manually by editing files into directories *langs*. - - - - - -## Licenses - -### Main code - -GPLv3 or (at your option) any later version. See file COPYING for more information. - -### Documentation - -All texts and readmes are licensed under GFDL. diff --git a/htdocs/modulebuilder/template/admin/about.php b/htdocs/modulebuilder/template/admin/about.php deleted file mode 100644 index 6e169cad..00000000 --- a/htdocs/modulebuilder/template/admin/about.php +++ /dev/null @@ -1,105 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/admin/about.php - * \ingroup mymodule - * \brief About page of module MyModule. - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -// Libraries -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once '../lib/mymodule.lib.php'; - -// Translations -$langs->loadLangs(array("errors", "admin", "mymodule@mymodule")); - -// Access control -if (!$user->admin) { - accessforbidden(); -} - -// Parameters -$action = GETPOST('action', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - - -/* - * Actions - */ - -// None - - -/* - * View - */ - -$form = new Form($db); - -$help_url = ''; -$page_name = "MyModuleAbout"; - -llxHeader('', $langs->trans($page_name), $help_url); - -// Subheader -$linkback = ''.$langs->trans("BackToModuleList").''; - -print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); - -// Configuration header -$head = mymoduleAdminPrepareHead(); -print dol_get_fiche_head($head, 'about', $langs->trans($page_name), 0, 'mymodule@mymodule'); - -dol_include_once('/mymodule/core/modules/modMyModule.class.php'); -$tmpmodule = new modMyModule($db); -print $tmpmodule->getDescLong(); - -// Page end -print dol_get_fiche_end(); -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/admin/myobject_extrafields.php b/htdocs/modulebuilder/template/admin/myobject_extrafields.php deleted file mode 100644 index 07653753..00000000 --- a/htdocs/modulebuilder/template/admin/myobject_extrafields.php +++ /dev/null @@ -1,147 +0,0 @@ - - * Copyright (C) 2003 Jean-Louis Bergamo - * Copyright (C) 2004-2011 Laurent Destailleur - * Copyright (C) 2012 Regis Houssin - * Copyright (C) 2014 Florian Henry - * Copyright (C) 2015 Jean-François Ferry - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/admin/myobject_extrafields.php - * \ingroup mymodule - * \brief Page to setup extra fields of myobject - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; -require_once '../lib/mymodule.lib.php'; - -// Load translation files required by the page -$langs->loadLangs(array('mymodule@mymodule', 'admin')); - -$extrafields = new ExtraFields($db); -$form = new Form($db); - -// List of supported format -$tmptype2label = ExtraFields::$type2label; -$type2label = array(''); -foreach ($tmptype2label as $key => $val) { - $type2label[$key] = $langs->transnoentitiesnoconv($val); -} - -$action = GETPOST('action', 'aZ09'); -$attrname = GETPOST('attrname', 'alpha'); -$elementtype = 'mymodule_myobject'; //Must be the $table_element of the class that manage extrafield - -if (!$user->admin) { - accessforbidden(); -} - - -/* - * Actions - */ - -require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; - - - -/* - * View - */ - -$textobject = $langs->transnoentitiesnoconv("MyObject"); - -$help_url = ''; -$page_name = "MyModuleSetup"; - -llxHeader('', $langs->trans("MyModuleSetup"), $help_url); - - -$linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); - - -$head = mymoduleAdminPrepareHead(); - -print dol_get_fiche_head($head, 'myobject_extrafields', $langs->trans($page_name), -1, 'mymodule@mymodule'); - -require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; - -print dol_get_fiche_end(); - - -// Buttons -if ((float) DOL_VERSION < 17) { // On v17+, the "New Attribute" button is included into tpl. - if ($action != 'create' && $action != 'edit') { - print '
    '; - print ''.$langs->trans("NewAttribute").''; - print "
    "; - } -} - - -/* - * Creation of an optional field - */ -if ($action == 'create') { - print '
    '; - print load_fiche_titre($langs->trans('NewAttribute')); - - require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php'; -} - -/* - * Edition of an optional field - */ -if ($action == 'edit' && !empty($attrname)) { - print "
    "; - print load_fiche_titre($langs->trans("FieldEdition", $attrname)); - - require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php'; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/admin/setup.php b/htdocs/modulebuilder/template/admin/setup.php deleted file mode 100644 index dea2a1a5..00000000 --- a/htdocs/modulebuilder/template/admin/setup.php +++ /dev/null @@ -1,588 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/admin/setup.php - * \ingroup mymodule - * \brief MyModule setup page. - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -global $langs, $user; - -// Libraries -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once '../lib/mymodule.lib.php'; -//require_once "../class/myclass.class.php"; - -// Translations -$langs->loadLangs(array("admin", "mymodule@mymodule")); - -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array('mymodulesetup', 'globalsetup')); - -// Access control -if (!$user->admin) { - accessforbidden(); -} - -// Parameters -$action = GETPOST('action', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); -$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php - -$value = GETPOST('value', 'alpha'); -$label = GETPOST('label', 'alpha'); -$scandir = GETPOST('scan_dir', 'alpha'); -$type = 'myobject'; - - -$error = 0; -$setupnotempty = 0; - -// Set this to 1 to use the factory to manage constants. Warning, the generated module will be compatible with version v15+ only -$useFormSetup = 1; - -if (!class_exists('FormSetup')) { - // For retrocompatibility Dolibarr < 16.0 - if (floatval(DOL_VERSION) < 16.0 && !class_exists('FormSetup')) { - require_once __DIR__.'/../backport/v16/core/class/html.formsetup.class.php'; - } else { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formsetup.class.php'; - } -} - -$formSetup = new FormSetup($db); - - -// HTTP HOST -$item = $formSetup->newItem('NO_PARAM_JUST_TEXT'); -$item->fieldOverride = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST']; -$item->cssClass = 'minwidth500'; - -// Setup conf MYMODULE_MYPARAM1 as a simple string input -$item = $formSetup->newItem('MYMODULE_MYPARAM1'); -$item->defaultFieldValue = 'default value'; - -// Setup conf MYMODULE_MYPARAM2 as a simple textarea input but we replace the text of field title -$item = $formSetup->newItem('MYMODULE_MYPARAM2'); -$item->nameText = $item->getNameText().' more html text '; - -// Setup conf MYMODULE_MYPARAM3 -$item = $formSetup->newItem('MYMODULE_MYPARAM3'); -$item->setAsThirdpartyType(); - -// Setup conf MYMODULE_MYPARAM4 : exemple of quick define write style -$formSetup->newItem('MYMODULE_MYPARAM4')->setAsYesNo(); - -// Setup conf MYMODULE_MYPARAM5 -$formSetup->newItem('MYMODULE_MYPARAM5')->setAsEmailTemplate('thirdparty'); - -// Setup conf MYMODULE_MYPARAM6 -$formSetup->newItem('MYMODULE_MYPARAM6')->setAsSecureKey()->enabled = 0; // disabled - -// Setup conf MYMODULE_MYPARAM7 -$formSetup->newItem('MYMODULE_MYPARAM7')->setAsProduct(); - -$formSetup->newItem('Title')->setAsTitle(); - -// Setup conf MYMODULE_MYPARAM8 -$item = $formSetup->newItem('MYMODULE_MYPARAM8'); -$TField = array( - 'test01' => $langs->trans('test01'), - 'test02' => $langs->trans('test02'), - 'test03' => $langs->trans('test03'), - 'test04' => $langs->trans('test04'), - 'test05' => $langs->trans('test05'), - 'test06' => $langs->trans('test06'), -); -$item->setAsMultiSelect($TField); -$item->helpText = $langs->transnoentities('MYMODULE_MYPARAM8'); - - -// Setup conf MYMODULE_MYPARAM9 -$formSetup->newItem('MYMODULE_MYPARAM9')->setAsSelect($TField); - - -// Setup conf MYMODULE_MYPARAM10 -$item = $formSetup->newItem('MYMODULE_MYPARAM10'); -$item->setAsColor(); -$item->defaultFieldValue = '#FF0000'; -$item->nameText = $item->getNameText().' more html text '; -$item->fieldInputOverride = ''; -$item->helpText = $langs->transnoentities('AnHelpMessage'); -//$item->fieldValue = ''; -//$item->fieldAttr = array() ; // fields attribute only for compatible fields like input text -//$item->fieldOverride = false; // set this var to override field output will override $fieldInputOverride and $fieldOutputOverride too -//$item->fieldInputOverride = false; // set this var to override field input -//$item->fieldOutputOverride = false; // set this var to override field output - - -$setupnotempty =+ count($formSetup->items); - - -$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); - - -/* - * Actions - */ - -// For retrocompatibility Dolibarr < 15.0 -if ( versioncompare(explode('.', DOL_VERSION), array(15)) < 0 && $action == 'update' && !empty($user->admin)) { - $formSetup->saveConfFromPost(); -} - -include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; - -if ($action == 'updateMask') { - $maskconst = GETPOST('maskconst', 'aZ09'); - $maskvalue = GETPOST('maskvalue', 'alpha'); - - if ($maskconst && preg_match('/_MASK$/', $maskconst)) { - $res = dolibarr_set_const($db, $maskconst, $maskvalue, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - } - - if (!$error) { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - setEventMessages($langs->trans("Error"), null, 'errors'); - } -} elseif ($action == 'specimen') { - $modele = GETPOST('module', 'alpha'); - $tmpobjectkey = GETPOST('object'); - - $tmpobject = new $tmpobjectkey($db); - $tmpobject->initAsSpecimen(); - - // Search template files - $file = ''; $classname = ''; $filefound = 0; - $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); - foreach ($dirmodels as $reldir) { - $file = dol_buildpath($reldir."core/modules/mymodule/doc/pdf_".$modele."_".strtolower($tmpobjectkey).".modules.php", 0); - if (file_exists($file)) { - $filefound = 1; - $classname = "pdf_".$modele."_".strtolower($tmpobjectkey); - break; - } - } - - if ($filefound) { - require_once $file; - - $module = new $classname($db); - - if ($module->write_file($tmpobject, $langs) > 0) { - header("Location: ".DOL_URL_ROOT."/document.php?modulepart=mymodule-".strtolower($tmpobjectkey)."&file=SPECIMEN.pdf"); - return; - } else { - setEventMessages($module->error, null, 'errors'); - dol_syslog($module->error, LOG_ERR); - } - } else { - setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors'); - dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); - } -} elseif ($action == 'setmod') { - // TODO Check if numbering module chosen can be activated by calling method canBeActivated - $tmpobjectkey = GETPOST('object'); - if (!empty($tmpobjectkey)) { - $constforval = 'MYMODULE_'.strtoupper($tmpobjectkey)."_ADDON"; - dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity); - } -} elseif ($action == 'set') { - // Activate a model - $ret = addDocumentModel($value, $type, $label, $scandir); -} elseif ($action == 'del') { - $ret = delDocumentModel($value, $type); - if ($ret > 0) { - $tmpobjectkey = GETPOST('object'); - if (!empty($tmpobjectkey)) { - $constforval = 'MYMODULE_'.strtoupper($tmpobjectkey).'_ADDON_PDF'; - if ($conf->global->$constforval == "$value") { - dolibarr_del_const($db, $constforval, $conf->entity); - } - } - } -} elseif ($action == 'setdoc') { - // Set or unset default model - $tmpobjectkey = GETPOST('object'); - if (!empty($tmpobjectkey)) { - $constforval = 'MYMODULE_'.strtoupper($tmpobjectkey).'_ADDON_PDF'; - if (dolibarr_set_const($db, $constforval, $value, 'chaine', 0, '', $conf->entity)) { - // The constant that was read before the new set - // We therefore requires a variable to have a coherent view - $conf->global->$constforval = $value; - } - - // We disable/enable the document template (into llx_document_model table) - $ret = delDocumentModel($value, $type); - if ($ret > 0) { - $ret = addDocumentModel($value, $type, $label, $scandir); - } - } -} elseif ($action == 'unsetdoc') { - $tmpobjectkey = GETPOST('object'); - if (!empty($tmpobjectkey)) { - $constforval = 'MYMODULE_'.strtoupper($tmpobjectkey).'_ADDON_PDF'; - dolibarr_del_const($db, $constforval, $conf->entity); - } -} - - - -/* - * View - */ - -$form = new Form($db); - -$help_url = ''; -$page_name = "MyModuleSetup"; - -llxHeader('', $langs->trans($page_name), $help_url); - -// Subheader -$linkback = ''.$langs->trans("BackToModuleList").''; - -print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); - -// Configuration header -$head = mymoduleAdminPrepareHead(); -print dol_get_fiche_head($head, 'settings', $langs->trans($page_name), -1, "mymodule@mymodule"); - -// Setup page goes here -echo ''.$langs->trans("MyModuleSetupPage").'

    '; - - -if ($action == 'edit') { - print $formSetup->generateOutput(true); - print '
    '; -} elseif (!empty($formSetup->items)) { - print $formSetup->generateOutput(); - print '
    '; - print ''.$langs->trans("Modify").''; - print '
    '; -} else { - print '
    '.$langs->trans("NothingToSetup"); -} - - -$moduledir = 'mymodule'; -$myTmpObjects = array(); -// TODO Scan list of objects -$myTmpObjects['myobject'] = array('label'=>'MyObject', 'includerefgeneration'=>0, 'includedocgeneration'=>0); - - -foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) { - if ($myTmpObjectKey != $type) { - continue; - } - if ($myTmpObjectArray['includerefgeneration']) { - /* - * Orders Numbering model - */ - $setupnotempty++; - - print load_fiche_titre($langs->trans("NumberingModules", $myTmpObjectArray['label']), '', ''); - - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''."\n"; - - clearstatcache(); - - foreach ($dirmodels as $reldir) { - $dir = dol_buildpath($reldir."core/modules/".$moduledir); - - if (is_dir($dir)) { - $handle = opendir($dir); - if (is_resource($handle)) { - while (($file = readdir($handle)) !== false) { - if (strpos($file, 'mod_'.strtolower($myTmpObjectKey).'_') === 0 && substr($file, dol_strlen($file) - 3, 3) == 'php') { - $file = substr($file, 0, dol_strlen($file) - 4); - - require_once $dir.'/'.$file.'.php'; - - $module = new $file($db); - - // Show modules according to features level - if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) { - continue; - } - if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) { - continue; - } - - if ($module->isEnabled()) { - dol_include_once('/'.$moduledir.'/class/'.strtolower($myTmpObjectKey).'.class.php'); - - print ''; - - // Show example of numbering model - print ''."\n"; - - print ''; - - $mytmpinstance = new $myTmpObjectKey($db); - $mytmpinstance->initAsSpecimen(); - - // Info - $htmltooltip = ''; - $htmltooltip .= ''.$langs->trans("Version").': '.$module->getVersion().'
    '; - - $nextval = $module->getNextValue($mytmpinstance); - if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval - $htmltooltip .= ''.$langs->trans("NextValue").': '; - if ($nextval) { - if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') { - $nextval = $langs->trans($nextval); - } - $htmltooltip .= $nextval.'
    '; - } else { - $htmltooltip .= $langs->trans($module->error).'
    '; - } - } - - print ''; - - print "\n"; - } - } - } - closedir($handle); - } - } - } - print "
    '.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("Status").''.$langs->trans("ShortInfo").'
    '.$module->name."\n"; - print $module->info(); - print ''; - $tmp = $module->getExample(); - if (preg_match('/^Error/', $tmp)) { - $langs->load("errors"); - print '
    '.$langs->trans($tmp).'
    '; - } elseif ($tmp == 'NotConfigured') { - print $langs->trans($tmp); - } else { - print $tmp; - } - print '
    '; - $constforvar = 'MYMODULE_'.strtoupper($myTmpObjectKey).'_ADDON'; - if (getDolGlobalString($constforvar) == $file) { - print img_picto($langs->trans("Activated"), 'switch_on'); - } else { - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); - print ''; - } - print ''; - print $form->textwithpicto('', $htmltooltip, 1, 0); - print '

    \n"; - } - - if ($myTmpObjectArray['includedocgeneration']) { - /* - * Document templates generators - */ - $setupnotempty++; - $type = strtolower($myTmpObjectKey); - - print load_fiche_titre($langs->trans("DocumentModules", $myTmpObjectKey), '', ''); - - // Load array def with activated templates - $def = array(); - $sql = "SELECT nom"; - $sql .= " FROM ".MAIN_DB_PREFIX."document_model"; - $sql .= " WHERE type = '".$db->escape($type)."'"; - $sql .= " AND entity = ".$conf->entity; - $resql = $db->query($sql); - if ($resql) { - $i = 0; - $num_rows = $db->num_rows($resql); - while ($i < $num_rows) { - $array = $db->fetch_array($resql); - array_push($def, $array[0]); - $i++; - } - } else { - dol_print_error($db); - } - - print "\n"; - print "\n"; - print ''; - print ''; - print '\n"; - print '\n"; - print ''; - print ''; - print "\n"; - - clearstatcache(); - - foreach ($dirmodels as $reldir) { - foreach (array('', '/doc') as $valdir) { - $realpath = $reldir."core/modules/".$moduledir.$valdir; - $dir = dol_buildpath($realpath); - - if (is_dir($dir)) { - $handle = opendir($dir); - if (is_resource($handle)) { - while (($file = readdir($handle)) !== false) { - $filelist[] = $file; - } - closedir($handle); - arsort($filelist); - - foreach ($filelist as $file) { - if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) { - if (file_exists($dir.'/'.$file)) { - $name = substr($file, 4, dol_strlen($file) - 16); - $classname = substr($file, 0, dol_strlen($file) - 12); - - require_once $dir.'/'.$file; - $module = new $classname($db); - - $modulequalified = 1; - if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) { - $modulequalified = 0; - } - if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) { - $modulequalified = 0; - } - - if ($modulequalified) { - print ''; - - // Active - if (in_array($name, $def)) { - print ''; - } else { - print '"; - } - - // Default - print ''; - - // Info - $htmltooltip = ''.$langs->trans("Name").': '.$module->name; - $htmltooltip .= '
    '.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown")); - if ($module->type == 'pdf') { - $htmltooltip .= '
    '.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur; - } - $htmltooltip .= '
    '.$langs->trans("Path").': '.preg_replace('/^\//', '', $realpath).'/'.$file; - - $htmltooltip .= '

    '.$langs->trans("FeaturesSupported").':'; - $htmltooltip .= '
    '.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1); - $htmltooltip .= '
    '.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1); - - print ''; - - // Preview - print ''; - - print "\n"; - } - } - } - } - } - } - } - } - - print '
    '.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Status")."'.$langs->trans("Default")."'.$langs->trans("ShortInfo").''.$langs->trans("Preview").'
    '; - print (empty($module->name) ? $name : $module->name); - print "\n"; - if (method_exists($module, 'info')) { - print $module->info($langs); - } else { - print $module->description; - } - print ''."\n"; - print ''; - print img_picto($langs->trans("Enabled"), 'switch_on'); - print ''; - print ''."\n"; - print 'scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; - print "'; - $constforvar = 'MYMODULE_'.strtoupper($myTmpObjectKey).'_ADDON_PDF'; - if (getDolGlobalString($constforvar) == $name) { - //print img_picto($langs->trans("Default"), 'on'); - // Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset - print 'scandir).'&label='.urlencode($module->name).'&type='.urlencode($type).'" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').''; - } else { - print 'scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; - } - print ''; - print $form->textwithpicto('', $htmltooltip, 1, 0); - print ''; - if ($module->type == 'pdf') { - $newname = preg_replace('/_'.preg_quote(strtolower($myTmpObjectKey), '/').'/', '', $name); - print ''.img_object($langs->trans("Preview"), 'pdf').''; - } else { - print img_object($langs->trans("PreviewNotAvailable"), 'generic'); - } - print '
    '; - } -} - -if (empty($setupnotempty)) { - print '
    '.$langs->trans("NothingToSetup"); -} - -// Page end -print dol_get_fiche_end(); - -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/ajax/myobject.php b/htdocs/modulebuilder/template/ajax/myobject.php deleted file mode 100644 index 3e22eb25..00000000 --- a/htdocs/modulebuilder/template/ajax/myobject.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/mymodule/ajax/myobject.php - * \brief File to return Ajax response on product list request - */ - -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', 1); // Disables token renewal -} -if (!defined('NOREQUIREMENU')) { - define('NOREQUIREMENU', '1'); -} -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', '1'); -} -if (!defined('NOREQUIREAJAX')) { - define('NOREQUIREAJAX', '1'); -} -if (!defined('NOREQUIRESOC')) { - define('NOREQUIRESOC', '1'); -} -if (!defined('NOCSRFCHECK')) { - define('NOCSRFCHECK', '1'); -} -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', '1'); -} - -// Load Dolibarr environment -require '../../main.inc.php'; - -$mode = GETPOST('mode', 'aZ09'); - -// Security check -restrictedArea($user, 'mymodule', 0, 'myobject'); - - -/* - * View - */ - -dol_syslog("Call ajax mymodule/ajax/myobject.php"); - -top_httphead('application/json'); - -$arrayresult = array(); - -// .... - -$db->close(); - -print json_encode($arrayresult); diff --git a/htdocs/modulebuilder/template/build/doxygen/mymodule.doxyfile b/htdocs/modulebuilder/template/build/doxygen/mymodule.doxyfile deleted file mode 100644 index 837a8694..00000000 --- a/htdocs/modulebuilder/template/build/doxygen/mymodule.doxyfile +++ /dev/null @@ -1,2419 +0,0 @@ -# Doxyfile 1.8.12 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See https://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = mymodule - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = development - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = My module brief. - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = ../../img/mymodule.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../../doc/code/doxygen - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = YES - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = YES - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = NO - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = "../.." - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 0. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 0 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = YES - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = doxygen_warnings.log - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../.. - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: https://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. - -FILE_PATTERNS = *.php \ - *.pl - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = ../../build \ - ../../dev \ - ../../doc \ - ../../vendor - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = YES - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = *.php - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = ../../doc/images - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = ./ - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = YES - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.dolibarr.doc - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Dolibarrteam - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = YES - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /
    '; - } else { - $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); - } - } - } - - if ($withpicto != 2) { - $result .= $this->ref; - } - - $result .= $linkend; - //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); - - global $action, $hookmanager; - $hookmanager->initHooks(array($this->element.'dao')); - $parameters = array('id'=>$this->id, 'getnomurl' => &$result); - $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks - if ($reshook > 0) { - $result = $hookmanager->resPrint; - } else { - $result .= $hookmanager->resPrint; - } - - return $result; - } - - /** - * Return a thumb for kanban views - * - * @param string $option Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link) - * @return string HTML Code for Kanban thumb. - */ - /* - public function getKanbanView($option = '') - { - $return = '
    '; - $return .= '
    '; - $return .= ''; - $return .= img_picto('', $this->picto); - $return .= ''; - $return .= '
    '; - $return .= ''.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).''; - if (property_exists($this, 'label')) { - $return .= '
    '.$this->label.''; - } - if (method_exists($this, 'getLibStatut')) { - $return .= '
    '.$this->getLibStatut(5).'
    '; - } - $return .= '
    '; - $return .= '
    '; - $return .= '
    '; - - return $return; - } - */ - - /** - * Return the label of the status - * - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function getLabelStatus($mode = 0) - { - return $this->LibStatut($this->status, $mode); - } - - /** - * Return the label of the status - * - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function getLibStatut($mode = 0) - { - return $this->LibStatut($this->status, $mode); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return the status - * - * @param int $status Id status - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function LibStatut($status, $mode = 0) - { - // phpcs:enable - if (empty($this->labelStatus) || empty($this->labelStatusShort)) { - global $langs; - //$langs->load("mymodule@mymodule"); - $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); - $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); - $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled'); - $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); - $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); - $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled'); - } - - $statusType = 'status'.$status; - //if ($status == self::STATUS_VALIDATED) $statusType = 'status1'; - if ($status == self::STATUS_CANCELED) { - $statusType = 'status6'; - } - - return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); - } - - /** - * Load the info information in the object - * - * @param int $id Id of object - * @return void - */ - public function info($id) - { - $sql = "SELECT rowid,"; - $sql .= " date_creation as datec, tms as datem,"; - $sql .= " fk_user_creat, fk_user_modif"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t"; - $sql .= " WHERE t.rowid = ".((int) $id); - - $result = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); - - $this->id = $obj->rowid; - - $this->user_creation_id = $obj->fk_user_creat; - $this->user_modification_id = $obj->fk_user_modif; - if (!empty($obj->fk_user_valid)) { - $this->user_validation_id = $obj->fk_user_valid; - } - $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = empty($obj->datem) ? '' : $this->db->jdate($obj->datem); - if (!empty($obj->datev)) { - $this->date_validation = empty($obj->datev) ? '' : $this->db->jdate($obj->datev); - } - } - - $this->db->free($result); - } else { - dol_print_error($this->db); - } - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - // Set here init that are not commonf fields - // $this->property1 = ... - // $this->property2 = ... - - $this->initAsSpecimenCommon(); - } - - /** - * Create an array of lines - * - * @return array|int array of lines if OK, <0 if KO - */ - public function getLinesArray() - { - $this->lines = array(); - - $objectline = new MyObjectLine($this->db); - $result = $objectline->fetchAll('ASC', 'position', 0, 0, array('customsql'=>'fk_myobject = '.((int) $this->id))); - - if (is_numeric($result)) { - $this->error = $objectline->error; - $this->errors = $objectline->errors; - return $result; - } else { - $this->lines = $result; - return $this->lines; - } - } - - /** - * Returns the reference to the following non used object depending on the active numbering module. - * - * @return string Object free reference - */ - public function getNextNumRef() - { - global $langs, $conf; - $langs->load("mymodule@mymodule"); - - if (empty($conf->global->MYMODULE_MYOBJECT_ADDON)) { - $conf->global->MYMODULE_MYOBJECT_ADDON = 'mod_myobject_standard'; - } - - if (!empty($conf->global->MYMODULE_MYOBJECT_ADDON)) { - $mybool = false; - - $file = $conf->global->MYMODULE_MYOBJECT_ADDON.".php"; - $classname = $conf->global->MYMODULE_MYOBJECT_ADDON; - - // Include file with class - $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); - foreach ($dirmodels as $reldir) { - $dir = dol_buildpath($reldir."core/modules/mymodule/"); - - // Load file with numbering class (if found) - $mybool |= @include_once $dir.$file; - } - - if ($mybool === false) { - dol_print_error('', "Failed to include file ".$file); - return ''; - } - - if (class_exists($classname)) { - $obj = new $classname(); - $numref = $obj->getNextValue($this); - - if ($numref != '' && $numref != '-1') { - return $numref; - } else { - $this->error = $obj->error; - //dol_print_error($this->db,get_class($this)."::getNextNumRef ".$obj->error); - return ""; - } - } else { - print $langs->trans("Error")." ".$langs->trans("ClassNotFound").' '.$classname; - return ""; - } - } else { - print $langs->trans("ErrorNumberingModuleNotSetup", $this->element); - return ""; - } - } - - /** - * Create a document onto disk according to template module. - * - * @param string $modele Force template to use ('' to not force) - * @param Translate $outputlangs objet lang a utiliser pour traduction - * @param int $hidedetails Hide details of lines - * @param int $hidedesc Hide description - * @param int $hideref Hide ref - * @param null|array $moreparams Array to provide more information - * @return int 0 if KO, 1 if OK - */ - public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null) - { - global $conf, $langs; - - $result = 0; - $includedocgeneration = 0; - - $langs->load("mymodule@mymodule"); - - if (!dol_strlen($modele)) { - $modele = 'standard_myobject'; - - if (!empty($this->model_pdf)) { - $modele = $this->model_pdf; - } elseif (!empty($conf->global->MYOBJECT_ADDON_PDF)) { - $modele = $conf->global->MYOBJECT_ADDON_PDF; - } - } - - $modelpath = "core/modules/mymodule/doc/"; - - if ($includedocgeneration && !empty($modele)) { - $result = $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); - } - - return $result; - } - - /** - * Action executed by scheduler - * CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters' - * Use public function doScheduledJob($param1, $param2, ...) to get parameters - * - * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) - */ - public function doScheduledJob() - { - global $conf, $langs; - - //$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log'; - - $error = 0; - $this->output = ''; - $this->error = ''; - - dol_syslog(__METHOD__, LOG_DEBUG); - - $now = dol_now(); - - $this->db->begin(); - - // ... - - $this->db->commit(); - - return $error; - } -} - - -require_once DOL_DOCUMENT_ROOT.'/core/class/commonobjectline.class.php'; - -/** - * Class MyObjectLine. You can also remove this and generate a CRUD class for lines objects. - */ -class MyObjectLine extends CommonObjectLine -{ - // To complete with content of an object MyObjectLine - // We should have a field rowid, fk_myobject and position - - /** - * @var int Does object support extrafields ? 0=No, 1=Yes - */ - public $isextrafieldmanaged = 0; - - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct(DoliDB $db) - { - $this->db = $db; - } -} diff --git a/htdocs/modulebuilder/template/core/boxes/README.md b/htdocs/modulebuilder/template/core/boxes/README.md deleted file mode 100644 index 3989bca5..00000000 --- a/htdocs/modulebuilder/template/core/boxes/README.md +++ /dev/null @@ -1 +0,0 @@ -# Directory where widgets files are stored diff --git a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php b/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php deleted file mode 100644 index 7ea4b553..00000000 --- a/htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php +++ /dev/null @@ -1,217 +0,0 @@ - - * Copyright (C) 2018-2021 Frédéric France - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/core/boxes/mymodulewidget1.php - * \ingroup mymodule - * \brief Widget provided by MyModule - * - * Put detailed description here. - */ - -include_once DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"; - - -/** - * Class to manage the box - * - * Warning: for the box to be detected correctly by dolibarr, - * the filename should be the lowercase classname - */ -class mymodulewidget1 extends ModeleBoxes -{ - /** - * @var string Alphanumeric ID. Populated by the constructor. - */ - public $boxcode = "mymodulebox"; - - /** - * @var string Box icon (in configuration page) - * Automatically calls the icon named with the corresponding "object_" prefix - */ - public $boximg = "mymodule@mymodule"; - - /** - * @var string Box label (in configuration page) - */ - public $boxlabel; - - /** - * @var string[] Module dependencies - */ - public $depends = array('mymodule'); - - /** - * @var DoliDb Database handler - */ - public $db; - - /** - * @var mixed More parameters - */ - public $param; - - /** - * @var array Header informations. Usually created at runtime by loadBox(). - */ - public $info_box_head = array(); - - /** - * @var array Contents informations. Usually created at runtime by loadBox(). - */ - public $info_box_contents = array(); - - /** - * @var string Widget type ('graph' means the widget is a graph widget) - */ - public $widgettype = 'graph'; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - * @param string $param More parameters - */ - public function __construct(DoliDB $db, $param = '') - { - global $user, $conf, $langs; - // Translations - $langs->loadLangs(array("boxes", "mymodule@mymodule")); - - parent::__construct($db, $param); - - $this->boxlabel = $langs->transnoentitiesnoconv("MyWidget"); - - $this->param = $param; - - //$this->enabled = $conf->global->FEATURES_LEVEL > 0; // Condition when module is enabled or not - //$this->hidden = ! ($user->rights->mymodule->myobject->read); // Condition when module is visible by user (test on permission) - } - - /** - * Load data into info_box_contents array to show array later. Called by Dolibarr before displaying the box. - * - * @param int $max Maximum number of records to load - * @return void - */ - public function loadBox($max = 5) - { - global $langs; - - // Use configuration value for max lines count - $this->max = $max; - - //dol_include_once("/mymodule/class/mymodule.class.php"); - - // Populate the head at runtime - $text = $langs->trans("MyModuleBoxDescription", $max); - $this->info_box_head = array( - // Title text - 'text' => $text, - // Add a link - 'sublink' => 'http://example.com', - // Sublink icon placed after the text - 'subpicto' => 'object_mymodule@mymodule', - // Sublink icon HTML alt text - 'subtext' => '', - // Sublink HTML target - 'target' => '', - // HTML class attached to the picto and link - 'subclass' => 'center', - // Limit and truncate with "…" the displayed text lenght, 0 = disabled - 'limit' => 0, - // Adds translated " (Graph)" to a hidden form value's input (?) - 'graph' => false - ); - - // Populate the contents at runtime - $this->info_box_contents = array( - 0 => array( // First line - 0 => array( // First Column - // HTML properties of the TR element. Only available on the first column. - 'tr' => 'class="left"', - // HTML properties of the TD element - 'td' => '', - - // Main text for content of cell - 'text' => 'First cell of first line', - // Link on 'text' and 'logo' elements - 'url' => 'http://example.com', - // Link's target HTML property - 'target' => '_blank', - // Fist line logo (deprecated. Include instead logo html code into text or text2, and set asis property to true to avoid HTML cleaning) - //'logo' => 'monmodule@monmodule', - // Unformatted text, added after text. Usefull to add/load javascript code - 'textnoformat' => '', - - // Main text for content of cell (other method) - //'text2' => '

    Another text

    ', - - // Truncates 'text' element to the specified character length, 0 = disabled - 'maxlength' => 0, - // Prevents HTML cleaning (and truncation) - 'asis' => false, - // Same for 'text2' - 'asis2' => true - ), - 1 => array( // Another column - // No TR for n≠0 - 'td' => '', - 'text' => 'Second cell', - ) - ), - 1 => array( // Another line - 0 => array( // TR - 'tr' => 'class="left"', - 'text' => 'Another line' - ), - 1 => array( // TR - 'tr' => 'class="left"', - 'text' => '' - ) - ), - 2 => array( // Another line - 0 => array( // TR - 'tr' => 'class="left"', - 'text' => '' - ), - 1 => array( // TR - 'tr' => 'class="left"', - 'text' => '' - ) - ), - ); - } - - /** - * Method to show box. Called by Dolibarr eatch time it wants to display the box. - * - * @param array $head Array with properties of box title - * @param array $contents Array with properties of box lines - * @param int $nooutput No print, only return string - * @return string - */ - public function showBox($head = null, $contents = null, $nooutput = 0) - { - // You may make your own code here… - // … or use the parent's class function using the provided head and contents templates - return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput); - } -} diff --git a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php deleted file mode 100644 index ad0814f7..00000000 --- a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php +++ /dev/null @@ -1,199 +0,0 @@ - - * - * This file is an example to follow to add your own email selector inside - * the Dolibarr email tool. - * Follow instructions given in README file to know what to change to build - * your own emailing list selector. - * Code that need to be changed in this file are marked by "CHANGE THIS" tag. - */ - -include_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; -dol_include_once("/mymodule/class/myobject.class.php"); - - -/** - * mailing_mailinglist_mymodule - */ -class mailing_mailinglist_mymodule_myobject extends MailingTargets -{ - // CHANGE THIS: Put here a name not already used - public $name = 'mailinglist_mymodule_myobject'; - // CHANGE THIS: Put here a description of your selector module - public $desc = 'My object emailing target selector'; - // CHANGE THIS: Set to 1 if selector is available for admin users only - public $require_admin = 0; - - public $enabled = 'isModEnabled("mymodule")'; - - public $require_module = array(); - - /** - * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png - */ - public $picto = 'mymodule@mymodule'; - - /** - * @var DoliDB Database handler. - */ - public $db; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - $this->enabled = isModEnabled('mymodule'); - } - - - /** - * Displays the filter form that appears in the mailing recipient selection page - * - * @return string Return select zone - */ - public function formFilter() - { - global $langs; - $langs->load("members"); - - $form = new Form($this->db); - - $arraystatus = array(1=>'Option 1', 2=>'Option 2'); - - $s = ''; - $s .= $langs->trans("Status").': '; - $s .= ''; - $s .= '
    '; - - return $s; - } - - - /** - * Returns url link to file of the source of the recipient of the mailing - * - * @param int $id ID - * @return string Url lien - */ - public function url($id) - { - return ''.img_object('', "generic").''; - } - - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * This is the main function that returns the array of emails - * - * @param int $mailing_id Id of emailing - * @return int <0 if error, number of emails added if ok - */ - public function add_to_target($mailing_id) - { - // phpcs:enable - $target = array(); - $j = 0; - - $sql = " select rowid as id, label, firstname, lastname"; - $sql .= " from ".MAIN_DB_PREFIX."myobject"; - $sql .= " where email IS NOT NULL AND email <> ''"; - if (GETPOSTISSET('filter') && GETPOST('filter', 'alphanohtml') != 'none') { - $sql .= " AND status = '".$this->db->escape(GETPOST('filter', 'alphanohtml'))."'"; - } - $sql .= " ORDER BY email"; - - // Store recipients in target - $result = $this->db->query($sql); - if ($result) { - $num = $this->db->num_rows($result); - $i = 0; - - dol_syslog("mailinglist_mymodule_myobject.modules.php: mailing ".$num." targets found"); - - $old = ''; - while ($i < $num) { - $obj = $this->db->fetch_object($result); - if ($old <> $obj->email) { - $target[$j] = array( - 'email' => $obj->email, - 'name' => $obj->lastname, - 'id' => $obj->id, - 'firstname' => $obj->firstname, - 'other' => $obj->label, - 'source_url' => $this->url($obj->id), - 'source_id' => $obj->id, - 'source_type' => 'myobject@mymodule' - ); - $old = $obj->email; - $j++; - } - - $i++; - } - } else { - dol_syslog($this->db->error()); - $this->error = $this->db->error(); - return -1; - } - - // You must fill the $target array with record like this - // $target[0]=array('email'=>'email_0','name'=>'name_0','firstname'=>'firstname_0'); - // ... - // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n'); - - // Example: $target[0]=array('email'=>'myemail@mydomain.com','name'=>'Doe','firstname'=>'John'); - - // ----- Your code end here ----- - - return parent::addTargetsToDatabase($mailing_id, $target); - } - - - /** - * On the main mailing area, there is a box with statistics. - * If you want to add a line in this report you must provide an - * array of SQL request that returns two field: - * One called "label", One called "nb". - * - * @return array - */ - public function getSqlArrayForStats() - { - // CHANGE THIS: Optionnal - - //var $statssql=array(); - //$this->statssql[0]="SELECT field1 as label, count(distinct(email)) as nb FROM mytable WHERE email IS NOT NULL"; - - return array(); - } - - - /** - * Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * - * @param string $filter Filter - * @param string $option Options - * @return int Nb of recipients or -1 if KO - */ - public function getNbOfRecipients($filter = 1, $option = '') - { - $a = parent::getNbOfRecipients("select count(distinct(email)) as nb from ".MAIN_DB_PREFIX."myobject as p where email IS NOT NULL AND email != ''"); - - if ($a < 0) { - return -1; - } - return $a; - } -} diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php deleted file mode 100644 index 99cd900b..00000000 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ /dev/null @@ -1,501 +0,0 @@ - - * Copyright (C) 2018-2019 Nicolas ZABOURI - * Copyright (C) 2019-2020 Frédéric France - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \defgroup mymodule Module MyModule - * \brief MyModule module descriptor. - * - * \file htdocs/mymodule/core/modules/modMyModule.class.php - * \ingroup mymodule - * \brief Description and activation file for module MyModule - */ -include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php'; - -/** - * Description and activation class for module MyModule - */ -class modMyModule extends DolibarrModules -{ - /** - * Constructor. Define names, constants, directories, boxes, permissions - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - global $langs, $conf; - $this->db = $db; - - // Id for module (must be unique). - // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). - $this->numero = 500000; // TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve an id number for your module - - // Key text used to identify module (for permissions, menus, etc...) - $this->rights_class = 'mymodule'; - - // Family can be 'base' (core modules),'crm','financial','hr','projects','products','ecm','technic' (transverse modules),'interface' (link with external tools),'other','...' - // It is used to group modules by family in module setup page - $this->family = "other"; - - // Module position in the family on 2 digits ('01', '10', '20', ...) - $this->module_position = '90'; - - // Gives the possibility for the module, to provide his own family info and position of this family (Overwrite $this->family and $this->module_position. Avoid this) - //$this->familyinfo = array('myownfamily' => array('position' => '01', 'label' => $langs->trans("MyOwnFamily"))); - // Module label (no space allowed), used if translation string 'ModuleMyModuleName' not found (MyModule is name of module). - $this->name = preg_replace('/^mod/i', '', get_class($this)); - - // Module description, used if translation string 'ModuleMyModuleDesc' not found (MyModule is name of module). - $this->description = "MyModuleDescription"; - // Used only if file README.md and README-LL.md not found. - $this->descriptionlong = "MyModuleDescription"; - - // Author - $this->editor_name = 'Editor name'; - $this->editor_url = 'https://www.example.com'; - - // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z' - $this->version = '1.0'; - // Url to the file with your last numberversion of this module - //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; - - // Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase) - $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); - - // Name of image file used for this module. - // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' - // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - // To use a supported fa-xxx css style of font awesome, use this->picto='xxx' - $this->picto = 'generic'; - - // Define some features supported by module (triggers, login, substitutions, menus, css, etc...) - $this->module_parts = array( - // Set this to 1 if module has its own trigger directory (core/triggers) - 'triggers' => 0, - // Set this to 1 if module has its own login method file (core/login) - 'login' => 0, - // Set this to 1 if module has its own substitution function file (core/substitutions) - 'substitutions' => 0, - // Set this to 1 if module has its own menus handler directory (core/menus) - 'menus' => 0, - // Set this to 1 if module overwrite template dir (core/tpl) - 'tpl' => 0, - // Set this to 1 if module has its own barcode directory (core/modules/barcode) - 'barcode' => 0, - // Set this to 1 if module has its own models directory (core/modules/xxx) - 'models' => 0, - // Set this to 1 if module has its own printing directory (core/modules/printing) - 'printing' => 0, - // Set this to 1 if module has its own theme directory (theme) - 'theme' => 0, - // Set this to relative path of css file if module has its own css file - 'css' => array( - // '/mymodule/css/mymodule.css.php', - ), - // Set this to relative path of js file if module must load a js on all pages - 'js' => array( - // '/mymodule/js/mymodule.js.php', - ), - // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context to 'all' - 'hooks' => array( - // 'data' => array( - // 'hookcontext1', - // 'hookcontext2', - // ), - // 'entity' => '0', - ), - // Set this to 1 if features of module are opened to external users - 'moduleforexternal' => 0, - ); - - // Data directories to create when module is enabled. - // Example: this->dirs = array("/mymodule/temp","/mymodule/subdir"); - $this->dirs = array("/mymodule/temp"); - - // Config pages. Put here list of php page, stored into mymodule/admin directory, to use to setup module. - $this->config_page_url = array("setup.php@mymodule"); - - // Dependencies - // A condition to hide module - $this->hidden = false; - // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) - $this->depends = array(); - $this->requiredby = array(); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...) - $this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...) - - // The language file dedicated to your module - $this->langfiles = array("mymodule@mymodule"); - - // Prerequisites - $this->phpmin = array(7, 0); // Minimum version of PHP required by module - $this->need_dolibarr_version = array(11, -3); // Minimum version of Dolibarr required by module - - // Messages at activation - $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','MX'='textmx'...) - $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','MX'='textmx'...) - //$this->automatic_activation = array('FR'=>'MyModuleWasAutomaticallyActivatedBecauseOfYourCountryChoice'); - //$this->always_enabled = true; // If true, can't be disabled - - // Constants - // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive) - // Example: $this->const=array(1 => array('MYMODULE_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1), - // 2 => array('MYMODULE_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1) - // ); - $this->const = array(); - - // Some keys to add into the overwriting translation tables - /*$this->overwrite_translation = array( - 'en_US:ParentCompany'=>'Parent company or reseller', - 'fr_FR:ParentCompany'=>'Maison mère ou revendeur' - )*/ - - if (!isset($conf->mymodule) || !isset($conf->mymodule->enabled)) { - $conf->mymodule = new stdClass(); - $conf->mymodule->enabled = 0; - } - - // Array to add new pages in new tabs - $this->tabs = array(); - // Example: - // $this->tabs[] = array('data'=>'objecttype:+tabname1:Title1:mylangfile@mymodule:$user->rights->mymodule->read:/mymodule/mynewtab1.php?id=__ID__'); // To add a new tab identified by code tabname1 - // $this->tabs[] = array('data'=>'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key. - // $this->tabs[] = array('data'=>'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname - // - // Where objecttype can be - // 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member) - // 'contact' to add a tab in contact view - // 'contract' to add a tab in contract view - // 'group' to add a tab in group view - // 'intervention' to add a tab in intervention view - // 'invoice' to add a tab in customer invoice view - // 'invoice_supplier' to add a tab in supplier invoice view - // 'member' to add a tab in fundation member view - // 'opensurveypoll' to add a tab in opensurvey poll view - // 'order' to add a tab in sale order view - // 'order_supplier' to add a tab in supplier order view - // 'payment' to add a tab in payment view - // 'payment_supplier' to add a tab in supplier payment view - // 'product' to add a tab in product view - // 'propal' to add a tab in propal view - // 'project' to add a tab in project view - // 'stock' to add a tab in stock view - // 'thirdparty' to add a tab in third party view - // 'user' to add a tab in user view - - // Dictionaries - $this->dictionaries = array(); - /* Example: - $this->dictionaries=array( - 'langs'=>'mymodule@mymodule', - // List of tables we want to see into dictonnary editor - 'tabname'=>array("table1", "table2", "table3"), - // Label of tables - 'tablib'=>array("Table1", "Table2", "Table3"), - // Request to select fields - 'tabsql'=>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f', 'SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'), - // Sort order - 'tabsqlsort'=>array("label ASC", "label ASC", "label ASC"), - // List of fields (result of select to show dictionary) - 'tabfield'=>array("code,label", "code,label", "code,label"), - // List of fields (list of fields to edit a record) - 'tabfieldvalue'=>array("code,label", "code,label", "code,label"), - // List of fields (list of fields for insert) - 'tabfieldinsert'=>array("code,label", "code,label", "code,label"), - // Name of columns with primary key (try to always name it 'rowid') - 'tabrowid'=>array("rowid", "rowid", "rowid"), - // Condition to show each dictionary - 'tabcond'=>array($conf->mymodule->enabled, $conf->mymodule->enabled, $conf->mymodule->enabled), - // Tooltip for every fields of dictionaries: DO NOT PUT AN EMPTY ARRAY - 'tabhelp'=>array(array('code'=>$langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip'), array('code'=>$langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip'), ...), - ); - */ - - // Boxes/Widgets - // Add here list of php file(s) stored in mymodule/core/boxes that contains a class to show a widget. - $this->boxes = array( - // 0 => array( - // 'file' => 'mymodulewidget1.php@mymodule', - // 'note' => 'Widget provided by MyModule', - // 'enabledbydefaulton' => 'Home', - // ), - // ... - ); - - // Cronjobs (List of cron jobs entries to add when module is enabled) - // unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week - $this->cronjobs = array( - // 0 => array( - // 'label' => 'MyJob label', - // 'jobtype' => 'method', - // 'class' => '/mymodule/class/myobject.class.php', - // 'objectname' => 'MyObject', - // 'method' => 'doScheduledJob', - // 'parameters' => '', - // 'comment' => 'Comment', - // 'frequency' => 2, - // 'unitfrequency' => 3600, - // 'status' => 0, - // 'test' => '$conf->mymodule->enabled', - // 'priority' => 50, - // ), - ); - // Example: $this->cronjobs=array( - // 0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50), - // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>'$conf->mymodule->enabled', 'priority'=>50) - // ); - - // Permissions provided by this module - $this->rights = array(); - $r = 0; - // Add here entries to declare new permissions - /* BEGIN MODULEBUILDER PERMISSIONS */ - $this->rights[$r][0] = $this->numero . sprintf("%02d", $r + 1); // Permission id (must not be already used) - $this->rights[$r][1] = 'Read objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; - $this->rights[$r][5] = 'read'; // In php code, permission will be checked by test if ($user->rights->mymodule->myobject->read) - $r++; - $this->rights[$r][0] = $this->numero . sprintf("%02d", $r + 1); // Permission id (must not be already used) - $this->rights[$r][1] = 'Create/Update objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; - $this->rights[$r][5] = 'write'; // In php code, permission will be checked by test if ($user->rights->mymodule->myobject->write) - $r++; - $this->rights[$r][0] = $this->numero . sprintf("%02d", $r + 1); // Permission id (must not be already used) - $this->rights[$r][1] = 'Delete objects of MyModule'; // Permission label - $this->rights[$r][4] = 'myobject'; - $this->rights[$r][5] = 'delete'; // In php code, permission will be checked by test if ($user->rights->mymodule->myobject->delete) - $r++; - /* END MODULEBUILDER PERMISSIONS */ - - // Main menu entries to add - $this->menu = array(); - $r = 0; - // Add here entries to declare new menus - /* BEGIN MODULEBUILDER TOPMENU */ - $this->menu[$r++] = array( - 'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'top', // This is a Top menu entry - 'titre'=>'ModuleMyModuleName', - 'prefix' => img_picto('', $this->picto, 'class="paddingright pictofixedwidth valignmiddle"'), - 'mainmenu'=>'mymodule', - 'leftmenu'=>'', - 'url'=>'/mymodule/mymoduleindex.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000 + $r, - 'enabled'=>'isModEnabled("mymodule")', // Define condition to show or hide menu entry. Use 'isModEnabled("mymodule")' if entry must be visible if module is enabled. - 'perms'=>'1', // Use 'perms'=>'$user->hasRight("mymodule", "myobject", "read")' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - /* END MODULEBUILDER TOPMENU */ - /* BEGIN MODULEBUILDER LEFTMENU MYOBJECT - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'MyObject', - 'prefix' => img_picto('', $this->picto, 'class="paddingright pictofixedwidth valignmiddle"'), - 'mainmenu'=>'mymodule', - 'leftmenu'=>'myobject', - 'url'=>'/mymodule/mymoduleindex.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'isModEnabled("mymodule")', // Define condition to show or hide menu entry. Use 'isModEnabled("mymodule")' if entry must be visible if module is enabled. - 'perms'=>'$user->hasRight("mymodule", "myobject", "read")', - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'List_MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject_list', - 'url'=>'/mymodule/myobject_list.php', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'isModEnabled("mymodule")', // Define condition to show or hide menu entry. Use 'isModEnabled("mymodule")' if entry must be visible if module is enabled. - 'perms'=>'$user->hasRight("mymodule", "myobject", "read")' - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - $this->menu[$r++]=array( - 'fk_menu'=>'fk_mainmenu=mymodule,fk_leftmenu=myobject', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'New_MyObject', - 'mainmenu'=>'mymodule', - 'leftmenu'=>'mymodule_myobject_new', - 'url'=>'/mymodule/myobject_card.php?action=create', - 'langs'=>'mymodule@mymodule', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>1000+$r, - 'enabled'=>'isModEnabled("mymodule")', // Define condition to show or hide menu entry. Use 'isModEnabled("mymodule")' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'perms'=>'$user->hasRight("mymodule", "myobject", "write")' - 'target'=>'', - 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both - ); - END MODULEBUILDER LEFTMENU MYOBJECT */ - // Exports profiles provided by this module - $r = 1; - /* BEGIN MODULEBUILDER EXPORT MYOBJECT */ - /* - $langs->load("mymodule@mymodule"); - $this->export_code[$r]=$this->rights_class.'_'.$r; - $this->export_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) - $this->export_icon[$r]='myobject@mymodule'; - // Define $this->export_fields_array, $this->export_TypeFields_array and $this->export_entities_array - $keyforclass = 'MyObject'; $keyforclassfile='/mymodule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; - //$this->export_fields_array[$r]['t.fieldtoadd']='FieldToAdd'; $this->export_TypeFields_array[$r]['t.fieldtoadd']='Text'; - //unset($this->export_fields_array[$r]['t.fieldtoremove']); - //$keyforclass = 'MyObjectLine'; $keyforclassfile='/mymodule/class/myobject.class.php'; $keyforelement='myobjectline@mymodule'; $keyforalias='tl'; - //include DOL_DOCUMENT_ROOT.'/core/commonfieldsinexport.inc.php'; - $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - //$keyforselect='myobjectline'; $keyforaliasextra='extraline'; $keyforelement='myobjectline@mymodule'; - //include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - //$this->export_dependencies_array[$r] = array('myobjectline'=>array('tl.rowid','tl.ref')); // To force to activate one or several fields if we select some fields that need same (like to select a unique key if we ask a field of a child to avoid the DISTINCT to discard them, or for computed field than need several other fields) - //$this->export_special_array[$r] = array('t.field'=>'...'); - //$this->export_examplevalues_array[$r] = array('t.field'=>'Example'); - //$this->export_help_array[$r] = array('t.field'=>'FieldDescHelp'); - $this->export_sql_start[$r]='SELECT DISTINCT '; - $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'myobject as t'; - //$this->export_sql_end[$r] =' LEFT JOIN '.MAIN_DB_PREFIX.'myobject_line as tl ON tl.fk_myobject = t.rowid'; - $this->export_sql_end[$r] .=' WHERE 1 = 1'; - $this->export_sql_end[$r] .=' AND t.entity IN ('.getEntity('myobject').')'; - $r++; */ - /* END MODULEBUILDER EXPORT MYOBJECT */ - - // Imports profiles provided by this module - $r = 1; - /* BEGIN MODULEBUILDER IMPORT MYOBJECT */ - /* - $langs->load("mymodule@mymodule"); - $this->import_code[$r]=$this->rights_class.'_'.$r; - $this->import_label[$r]='MyObjectLines'; // Translation key (used only if key ExportDataset_xxx_z not found) - $this->import_icon[$r]='myobject@mymodule'; - $this->import_tables_array[$r] = array('t' => MAIN_DB_PREFIX.'mymodule_myobject', 'extra' => MAIN_DB_PREFIX.'mymodule_myobject_extrafields'); - $this->import_tables_creator_array[$r] = array('t' => 'fk_user_author'); // Fields to store import user id - $import_sample = array(); - $keyforclass = 'MyObject'; $keyforclassfile='/mymodule/class/myobject.class.php'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/commonfieldsinimport.inc.php'; - $import_extrafield_sample = array(); - $keyforselect='myobject'; $keyforaliasextra='extra'; $keyforelement='myobject@mymodule'; - include DOL_DOCUMENT_ROOT.'/core/extrafieldsinimport.inc.php'; - $this->import_fieldshidden_array[$r] = array('extra.fk_object' => 'lastrowid-'.MAIN_DB_PREFIX.'mymodule_myobject'); - $this->import_regex_array[$r] = array(); - $this->import_examplevalues_array[$r] = array_merge($import_sample, $import_extrafield_sample); - $this->import_updatekeys_array[$r] = array('t.ref' => 'Ref'); - $this->import_convertvalue_array[$r] = array( - 't.ref' => array( - 'rule'=>'getrefifauto', - 'class'=>(empty($conf->global->MYMODULE_MYOBJECT_ADDON) ? 'mod_myobject_standard' : $conf->global->MYMODULE_MYOBJECT_ADDON), - 'path'=>"/core/modules/commande/".(empty($conf->global->MYMODULE_MYOBJECT_ADDON) ? 'mod_myobject_standard' : $conf->global->MYMODULE_MYOBJECT_ADDON).'.php' - 'classobject'=>'MyObject', - 'pathobject'=>'/mymodule/class/myobject.class.php', - ), - 't.fk_soc' => array('rule' => 'fetchidfromref', 'file' => '/societe/class/societe.class.php', 'class' => 'Societe', 'method' => 'fetch', 'element' => 'ThirdParty'), - 't.fk_user_valid' => array('rule' => 'fetchidfromref', 'file' => '/user/class/user.class.php', 'class' => 'User', 'method' => 'fetch', 'element' => 'user'), - 't.fk_mode_reglement' => array('rule' => 'fetchidfromcodeorlabel', 'file' => '/compta/paiement/class/cpaiement.class.php', 'class' => 'Cpaiement', 'method' => 'fetch', 'element' => 'cpayment'), - ); - $r++; */ - /* END MODULEBUILDER IMPORT MYOBJECT */ - } - - /** - * Function called when module is enabled. - * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. - * It also creates data directories - * - * @param string $options Options when enabling module ('', 'noboxes') - * @return int 1 if OK, 0 if KO - */ - public function init($options = '') - { - global $conf, $langs; - - //$result = $this->_load_tables('/install/mysql/', 'mymodule'); - $result = $this->_load_tables('/mymodule/sql/'); - if ($result < 0) { - return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') - } - - // Create extrafields during init - //include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; - //$extrafields = new ExtraFields($this->db); - //$result1=$extrafields->addExtraField('mymodule_myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result2=$extrafields->addExtraField('mymodule_myattr2', "New Attr 2 label", 'varchar', 1, 10, 'project', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result3=$extrafields->addExtraField('mymodule_myattr3', "New Attr 3 label", 'varchar', 1, 10, 'bank_account', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result4=$extrafields->addExtraField('mymodule_myattr4', "New Attr 4 label", 'select', 1, 3, 'thirdparty', 0, 1, '', array('options'=>array('code1'=>'Val1','code2'=>'Val2','code3'=>'Val3')), 1,'', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - //$result5=$extrafields->addExtraField('mymodule_myattr5', "New Attr 5 label", 'text', 1, 10, 'user', 0, 0, '', '', 1, '', 0, 0, '', '', 'mymodule@mymodule', '$conf->mymodule->enabled'); - - // Permissions - $this->remove($options); - - $sql = array(); - - // Document templates - $moduledir = dol_sanitizeFileName('mymodule'); - $myTmpObjects = array(); - $myTmpObjects['MyObject'] = array('includerefgeneration'=>0, 'includedocgeneration'=>0); - - foreach ($myTmpObjects as $myTmpObjectKey => $myTmpObjectArray) { - if ($myTmpObjectKey == 'MyObject') { - continue; - } - if ($myTmpObjectArray['includerefgeneration']) { - $src = DOL_DOCUMENT_ROOT.'/install/doctemplates/'.$moduledir.'/template_myobjects.odt'; - $dirodt = DOL_DATA_ROOT.'/doctemplates/'.$moduledir; - $dest = $dirodt.'/template_myobjects.odt'; - - if (file_exists($src) && !file_exists($dest)) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - dol_mkdir($dirodt); - $result = dol_copy($src, $dest, 0, 0); - if ($result < 0) { - $langs->load("errors"); - $this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest); - return 0; - } - } - - $sql = array_merge($sql, array( - "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'standard_".strtolower($myTmpObjectKey)."' AND type = '".$this->db->escape(strtolower($myTmpObjectKey))."' AND entity = ".((int) $conf->entity), - "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('standard_".strtolower($myTmpObjectKey)."', '".$this->db->escape(strtolower($myTmpObjectKey))."', ".((int) $conf->entity).")", - "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = 'generic_".strtolower($myTmpObjectKey)."_odt' AND type = '".$this->db->escape(strtolower($myTmpObjectKey))."' AND entity = ".((int) $conf->entity), - "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('generic_".strtolower($myTmpObjectKey)."_odt', '".$this->db->escape(strtolower($myTmpObjectKey))."', ".((int) $conf->entity).")" - )); - } - } - - return $this->_init($sql, $options); - } - - /** - * Function called when module is disabled. - * Remove from database constants, boxes and permissions from Dolibarr database. - * Data directories are not deleted - * - * @param string $options Options when enabling module ('', 'noboxes') - * @return int 1 if OK, 0 if KO - */ - public function remove($options = '') - { - $sql = array(); - return $this->_remove($sql, $options); - } -} diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php deleted file mode 100644 index 05486989..00000000 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php +++ /dev/null @@ -1,1343 +0,0 @@ - - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2008 Raphael Bertrand - * Copyright (C) 2010-2014 Juanjo Menent - * Copyright (C) 2012 Christophe Battarel - * Copyright (C) 2012 Cédric Salvador - * Copyright (C) 2012-2014 Raphaël Doursenaud - * Copyright (C) 2015 Marcos García - * Copyright (C) 2017 Ferran Marcet - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see https://www.gnu.org/ - */ - -/** - * \file htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard.modules.php - * \ingroup mymodule - * \brief File of class to generate document from standard template - */ - -dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); -require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; - - -/** - * Class to manage PDF template standard_myobject - */ -class pdf_standard_myobject extends ModelePDFMyObject -{ - /** - * @var DoliDb Database handler - */ - public $db; - - /** - * @var string model name - */ - public $name; - - /** - * @var string model description (short text) - */ - public $description; - - /** - * @var int Save the name of generated file as the main doc when generating a doc with this template - */ - public $update_main_doc_field; - - /** - * @var string document type - */ - public $type; - - /** - * @var array Minimum version of PHP required by module. - * e.g.: PHP ≥ 7.0 = array(7, 0) - */ - public $phpmin = array(7, 0); - - /** - * Dolibarr version of the loaded document - * @var string - */ - public $version = 'dolibarr'; - - /** - * Issuer - * @var Societe Object that emits - */ - public $emetteur; - - /** - * @var bool Situation invoice type - */ - public $situationinvoice; - - - /** - * @var array of document table columns - */ - public $cols; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - global $conf, $langs, $mysoc; - - // Translations - $langs->loadLangs(array("main", "bills")); - - $this->db = $db; - $this->name = "standard"; - $this->description = $langs->trans('DocumentModelStandardPDF'); - $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template - - // Dimension page - $this->type = 'pdf'; - $formatarray = pdf_getFormat(); - $this->page_largeur = $formatarray['width']; - $this->page_hauteur = $formatarray['height']; - $this->format = array($this->page_largeur, $this->page_hauteur); - $this->marge_gauche = getDolGlobalInt('MAIN_PDF_MARGIN_LEFT', 10); - $this->marge_droite = getDolGlobalInt('MAIN_PDF_MARGIN_RIGHT', 10); - $this->marge_haute = getDolGlobalInt('MAIN_PDF_MARGIN_TOP', 10); - $this->marge_basse = getDolGlobalInt('MAIN_PDF_MARGIN_BOTTOM', 10); - - // Get source company - $this->emetteur = $mysoc; - if (empty($this->emetteur->country_code)) { - $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default, if was not defined - } - - // Define position of columns - $this->posxdesc = $this->marge_gauche + 1; // used for notes ans other stuff - - - $this->tabTitleHeight = 5; // default height - - // Use new system for position of columns, view $this->defineColumnField() - - $this->tva = array(); - $this->localtax1 = array(); - $this->localtax2 = array(); - $this->atleastoneratenotnull = 0; - $this->atleastonediscount = 0; - $this->situationinvoice = false; - } - - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Function to build pdf onto disk - * - * @param Object $object Object to generate - * @param Translate $outputlangs Lang output object - * @param string $srctemplatepath Full path of source filename for generator using a template file - * @param int $hidedetails Do not show line details - * @param int $hidedesc Do not show desc - * @param int $hideref Do not show ref - * @return int 1=OK, 0=KO - */ - public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0) - { - // phpcs:enable - global $user, $langs, $conf, $mysoc, $db, $hookmanager, $nblines; - - dol_syslog("write_file outputlangs->defaultlang=".(is_object($outputlangs) ? $outputlangs->defaultlang : 'null')); - - if (!is_object($outputlangs)) { - $outputlangs = $langs; - } - // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO - if (!empty($conf->global->MAIN_USE_FPDF)) { - $outputlangs->charset_output = 'ISO-8859-1'; - } - - // Load translation files required by the page - $outputlangs->loadLangs(array("main", "bills", "products", "dict", "companies")); - - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && $outputlangs->defaultlang != $conf->global->PDF_USE_ALSO_LANGUAGE_CODE) { - global $outputlangsbis; - $outputlangsbis = new Translate('', $conf); - $outputlangsbis->setDefaultLang($conf->global->PDF_USE_ALSO_LANGUAGE_CODE); - $outputlangsbis->loadLangs(array("main", "bills", "products", "dict", "companies")); - } - - $nblines = (is_array($object->lines) ? count($object->lines) : 0); - - $hidetop = 0; - if (!empty($conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE)) { - $hidetop = $conf->global->MAIN_PDF_DISABLE_COL_HEAD_TITLE; - } - - // Loop on each lines to detect if there is at least one image to show - $realpatharray = array(); - $this->atleastonephoto = false; - /* - if (!empty($conf->global->MAIN_GENERATE_MYOBJECT_WITH_PICTURE)) - { - $objphoto = new Product($this->db); - - for ($i = 0; $i < $nblines; $i++) - { - if (empty($object->lines[$i]->fk_product)) continue; - - //var_dump($objphoto->ref);exit; - if (getDolGlobalInt('PRODUCT_USE_OLD_PATH_FOR_PHOTO')) { - $pdir[0] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; - $pdir[1] = get_exdir(0, 0, 0, 0, $objphoto, 'product').dol_sanitizeFileName($objphoto->ref).'/'; - } else { - $pdir[0] = get_exdir(0, 0, 0, 0, $objphoto, 'product'); // default - $pdir[1] = get_exdir($objphoto->id, 2, 0, 0, $objphoto, 'product').$objphoto->id."/photos/"; // alternative - } - - $arephoto = false; - foreach ($pdir as $midir) - { - if (!$arephoto) - { - $dir = $conf->product->dir_output.'/'.$midir; - - foreach ($objphoto->liste_photos($dir, 1) as $key => $obj) - { - if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo - { - if ($obj['photo_vignette']) - { - $filename = $obj['photo_vignette']; - } else { - $filename = $obj['photo']; - } - } else { - $filename = $obj['photo']; - } - - $realpath = $dir.$filename; - $arephoto = true; - $this->atleastonephoto = true; - } - } - } - - if ($realpath && $arephoto) $realpatharray[$i] = $realpath; - } - } - */ - - //if (count($realpatharray) == 0) $this->posxpicture=$this->posxtva; - - if ($conf->mymodule->dir_output.'/myobject') { - $object->fetch_thirdparty(); - - // Definition of $dir and $file - if ($object->specimen) { - $dir = $conf->mymodule->dir_output.'/myobject'; - $file = $dir."/SPECIMEN.pdf"; - } else { - $objectref = dol_sanitizeFileName($object->ref); - $dir = $conf->mymodule->dir_output.'/myobject/'.$objectref; - $file = $dir."/".$objectref.".pdf"; - } - if (!file_exists($dir)) { - if (dol_mkdir($dir) < 0) { - $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); - return 0; - } - } - - if (file_exists($dir)) { - // Add pdfgeneration hook - if (!is_object($hookmanager)) { - include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; - $hookmanager = new HookManager($this->db); - } - $hookmanager->initHooks(array('pdfgeneration')); - $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs); - global $action; - $reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - - // Set nblines with the new facture lines content after hook - $nblines = (is_array($object->lines) ? count($object->lines) : 0); - - // Create pdf instance - $pdf = pdf_getInstance($this->format); - $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance - $pdf->SetAutoPageBreak(1, 0); - - $heightforinfotot = 50; // Height reserved to output the info and total part and payment part - $heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page - $heightforfooter = $this->marge_basse + (empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? 12 : 22); // Height reserved to output the footer (value include bottom margin) - - if (class_exists('TCPDF')) { - $pdf->setPrintHeader(false); - $pdf->setPrintFooter(false); - } - $pdf->SetFont(pdf_getPDFFont($outputlangs)); - - // Set path to the background PDF File - if (!empty($conf->global->MAIN_ADD_PDF_BACKGROUND)) { - $pagecount = $pdf->setSourceFile($conf->mycompany->multidir_output[$object->entity].'/'.$conf->global->MAIN_ADD_PDF_BACKGROUND); - $tplidx = $pdf->importPage(1); - } - - $pdf->Open(); - $pagenb = 0; - $pdf->SetDrawColor(128, 128, 128); - - $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); - $pdf->SetSubject($outputlangs->transnoentities("PdfTitle")); - $pdf->SetCreator("Dolibarr ".DOL_VERSION); - $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); - $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("PdfTitle")." ".$outputlangs->convToOutputCharset($object->thirdparty->name)); - if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) { - $pdf->SetCompression(false); - } - - // Set certificate - $cert = empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT; - // If user has no certificate, we try to take the company one - if (!$cert) { - $cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT; - } - // If a certificate is found - if ($cert) { - $info = array( - 'Name' => $this->emetteur->name, - 'Location' => getCountry($this->emetteur->country_code, 0), - 'Reason' => 'MYOBJECT', - 'ContactInfo' => $this->emetteur->email - ); - $pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info); - } - - $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - - // New page - $pdf->AddPage(); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - $pagenb++; - - $top_shift = $this->_pagehead($pdf, $object, 1, $outputlangs, $outputlangsbis); - $pdf->SetFont('', '', $default_font_size - 1); - $pdf->MultiCell(0, 3, ''); // Set interline to 3 - $pdf->SetTextColor(0, 0, 0); - - $tab_top = 90 + $top_shift; - $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10); - $tab_height = 130 - $top_shift; - $tab_height_newpage = 150; - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $tab_height_newpage -= $top_shift; - } - - $nexY = $tab_top - 1; - - // Display notes - $notetoshow = empty($object->note_public) ? '' : $object->note_public; - // Extrafields in note - $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); - if (!empty($extranote)) { - $notetoshow = dol_concatdesc($notetoshow, $extranote); - } - - $pagenb = $pdf->getPage(); - if ($notetoshow) { - $tab_top -= 2; - - $tab_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; - $pageposbeforenote = $pagenb; - - $substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object); - complete_substitutions_array($substitutionarray, $outputlangs, $object); - $notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs); - $notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow); - - $pdf->startTransaction(); - - $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); - // Description - $pageposafternote = $pdf->getPage(); - $posyafter = $pdf->GetY(); - - if ($pageposafternote > $pageposbeforenote) { - $pdf->rollbackTransaction(true); - - // prepare pages to receive notes - while ($pagenb < $pageposafternote) { - $pdf->AddPage(); - $pagenb++; - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $this->_pagehead($pdf, $object, 0, $outputlangs); - } - // $this->_pagefoot($pdf,$object,$outputlangs,1); - $pdf->setTopMargin($tab_top_newpage); - // The only function to edit the bottom margin of current page to set it. - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); - } - - // back to start - $pdf->setPage($pageposbeforenote); - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); - $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); - $pageposafternote = $pdf->getPage(); - - $posyafter = $pdf->GetY(); - - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { // There is no space left for total+free text - $pdf->AddPage('', '', true); - $pagenb++; - $pageposafternote++; - $pdf->setPage($pageposafternote); - $pdf->setTopMargin($tab_top_newpage); - // The only function to edit the bottom margin of current page to set it. - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); - //$posyafter = $tab_top_newpage; - } - - - // apply note frame to previous pages - $i = $pageposbeforenote; - while ($i < $pageposafternote) { - $pdf->setPage($i); - - - $pdf->SetDrawColor(128, 128, 128); - // Draw note frame - if ($i > $pageposbeforenote) { - $height_note = $this->page_hauteur - ($tab_top_newpage + $heightforfooter); - $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); - } else { - $height_note = $this->page_hauteur - ($tab_top + $heightforfooter); - $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); - } - - // Add footer - $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - $this->_pagefoot($pdf, $object, $outputlangs, 1); - - $i++; - } - - // apply note frame to last page - $pdf->setPage($pageposafternote); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $this->_pagehead($pdf, $object, 0, $outputlangs); - } - $height_note = $posyafter - $tab_top_newpage; - $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); - } else // No pagebreak - { - $pdf->commitTransaction(); - $posyafter = $pdf->GetY(); - $height_note = $posyafter - $tab_top; - $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); - - - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { - // not enough space, need to add page - $pdf->AddPage('', '', true); - $pagenb++; - $pageposafternote++; - $pdf->setPage($pageposafternote); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $this->_pagehead($pdf, $object, 0, $outputlangs); - } - - $posyafter = $tab_top_newpage; - } - } - - $tab_height = $tab_height - $height_note; - $tab_top = $posyafter + 6; - } else { - $height_note = 0; - } - - // Use new auto column system - $this->prepareArrayColumnField($object, $outputlangs, $hidedetails, $hidedesc, $hideref); - - // Table simulation to know the height of the title line - $pdf->startTransaction(); - $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop); - $pdf->rollbackTransaction(true); - - $nexY = $tab_top + $this->tabTitleHeight; - - // Loop on each lines - $pageposbeforeprintlines = $pdf->getPage(); - $pagenb = $pageposbeforeprintlines; - for ($i = 0; $i < $nblines; $i++) { - $curY = $nexY; - $pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage - $pdf->SetTextColor(0, 0, 0); - - // Define size of image if we need it - $imglinesize = array(); - if (!empty($realpatharray[$i])) { - $imglinesize = pdf_getSizeForImage($realpatharray[$i]); - } - - $pdf->setTopMargin($tab_top_newpage); - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext + $heightforinfotot); // The only function to edit the bottom margin of current page to set it. - $pageposbefore = $pdf->getPage(); - - $showpricebeforepagebreak = 1; - $posYAfterImage = 0; - - if ($this->getColumnStatus('photo')) { - // We start with Photo of product line - if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // If photo too high, we moved completely on new page - $pdf->AddPage('', '', true); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - $pdf->setPage($pageposbefore + 1); - - $curY = $tab_top_newpage; - - // Allows data in the first page if description is long enough to break in multiples pages - if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) { - $showpricebeforepagebreak = 1; - } else { - $showpricebeforepagebreak = 0; - } - } - - if (!empty($this->cols['photo']) && isset($imglinesize['width']) && isset($imglinesize['height'])) { - $pdf->Image($realpatharray[$i], $this->getColumnContentXStart('photo'), $curY, $imglinesize['width'], $imglinesize['height'], '', '', '', 2, 300); // Use 300 dpi - // $pdf->Image does not increase value return by getY, so we save it manually - $posYAfterImage = $curY + $imglinesize['height']; - } - } - - // Description of product line - if ($this->getColumnStatus('desc')) { - $pdf->startTransaction(); - - $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); - $pageposafter = $pdf->getPage(); - - if ($pageposafter > $pageposbefore) { // There is a pagebreak - $pdf->rollbackTransaction(true); - $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. - - $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); - - $pageposafter = $pdf->getPage(); - $posyafter = $pdf->GetY(); - //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // There is no space left for total+free text - if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page - $pdf->AddPage('', '', true); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - $pdf->setPage($pageposafter + 1); - } - } else { - // We found a page break - // Allows data in the first page if description is long enough to break in multiples pages - if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) { - $showpricebeforepagebreak = 1; - } else { - $showpricebeforepagebreak = 0; - } - } - } else // No pagebreak - { - $pdf->commitTransaction(); - } - } - - $nexY = $pdf->GetY(); - $pageposafter = $pdf->getPage(); - $pdf->setPage($pageposbefore); - $pdf->setTopMargin($this->marge_haute); - $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - - // We suppose that a too long description or photo were moved completely on next page - if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { - $pdf->setPage($pageposafter); $curY = $tab_top_newpage; - } - - $pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par defaut - - // Quantity - // Enough for 6 chars - if ($this->getColumnStatus('qty')) { - $qty = pdf_getlineqty($object, $i, $outputlangs, $hidedetails); - $this->printStdColumnContent($pdf, $curY, 'qty', $qty); - $nexY = max($pdf->GetY(), $nexY); - } - - // Extrafields - if (!empty($object->lines[$i]->array_options)) { - foreach ($object->lines[$i]->array_options as $extrafieldColKey => $extrafieldValue) { - if ($this->getColumnStatus($extrafieldColKey)) { - $extrafieldValue = $this->getExtrafieldContent($object->lines[$i], $extrafieldColKey, $outputlangs); - $this->printStdColumnContent($pdf, $curY, $extrafieldColKey, $extrafieldValue); - $nexY = max($pdf->GetY(), $nexY); - } - } - } - - - $parameters = array( - 'object' => $object, - 'i' => $i, - 'pdf' =>& $pdf, - 'curY' =>& $curY, - 'nexY' =>& $nexY, - 'outputlangs' => $outputlangs, - 'hidedetails' => $hidedetails - ); - $reshook = $hookmanager->executeHooks('printPDFline', $parameters, $this); // Note that $object may have been modified by hook - - - $sign = 1; - // Collecte des totaux par valeur de tva dans $this->tva["taux"]=total_tva - $prev_progress = $object->lines[$i]->get_prev_progress($object->id); - if ($prev_progress > 0 && !empty($object->lines[$i]->situation_percent)) { // Compute progress from previous situation - if (isModEnabled("multicurrency") && $object->multicurrency_tx != 1) { - $tvaligne = $sign * $object->lines[$i]->multicurrency_total_tva * ($object->lines[$i]->situation_percent - $prev_progress) / $object->lines[$i]->situation_percent; - } else { - $tvaligne = $sign * $object->lines[$i]->total_tva * ($object->lines[$i]->situation_percent - $prev_progress) / $object->lines[$i]->situation_percent; - } - } else { - if (isModEnabled("multicurrency") && $object->multicurrency_tx != 1) { - $tvaligne = $sign * $object->lines[$i]->multicurrency_total_tva; - } else { - $tvaligne = $sign * $object->lines[$i]->total_tva; - } - } - - $localtax1ligne = $object->lines[$i]->total_localtax1; - $localtax2ligne = $object->lines[$i]->total_localtax2; - $localtax1_rate = $object->lines[$i]->localtax1_tx; - $localtax2_rate = $object->lines[$i]->localtax2_tx; - $localtax1_type = $object->lines[$i]->localtax1_type; - $localtax2_type = $object->lines[$i]->localtax2_type; - - if ($object->remise_percent) { - $tvaligne -= ($tvaligne * $object->remise_percent) / 100; - } - if ($object->remise_percent) { - $localtax1ligne -= ($localtax1ligne * $object->remise_percent) / 100; - } - if ($object->remise_percent) { - $localtax2ligne -= ($localtax2ligne * $object->remise_percent) / 100; - } - - $vatrate = (string) $object->lines[$i]->tva_tx; - - // Retrieve type from database for backward compatibility with old records - if ((!isset($localtax1_type) || $localtax1_type == '' || !isset($localtax2_type) || $localtax2_type == '') // if tax type not defined - && (!empty($localtax1_rate) || !empty($localtax2_rate))) { // and there is local tax - $localtaxtmp_array = getLocalTaxesFromRate($vatrate, 0, $object->thirdparty, $mysoc); - $localtax1_type = isset($localtaxtmp_array[0]) ? $localtaxtmp_array[0] : ''; - $localtax2_type = isset($localtaxtmp_array[2]) ? $localtaxtmp_array[2] : ''; - } - - // retrieve global local tax - if ($localtax1_type && $localtax1ligne != 0) { - $this->localtax1[$localtax1_type][$localtax1_rate] += $localtax1ligne; - } - if ($localtax2_type && $localtax2ligne != 0) { - $this->localtax2[$localtax2_type][$localtax2_rate] += $localtax2ligne; - } - - if (($object->lines[$i]->info_bits & 0x01) == 0x01) { - $vatrate .= '*'; - } - if (!isset($this->tva[$vatrate])) { - $this->tva[$vatrate] = 0; - } - $this->tva[$vatrate] += $tvaligne; - - $nexY = max($nexY, $posYAfterImage); - - // Add line - if (!empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblines - 1)) { - $pdf->setPage($pageposafter); - $pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80, 80, 80))); - //$pdf->SetDrawColor(190,190,200); - $pdf->line($this->marge_gauche, $nexY, $this->page_largeur - $this->marge_droite, $nexY); - $pdf->SetLineStyle(array('dash'=>0)); - } - - // Detect if some page were added automatically and output _tableau for past pages - while ($pagenb < $pageposafter) { - $pdf->setPage($pagenb); - if ($pagenb == $pageposbeforeprintlines) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); - } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); - } - $this->_pagefoot($pdf, $object, $outputlangs, 1); - $pagenb++; - $pdf->setPage($pagenb); - $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $this->_pagehead($pdf, $object, 0, $outputlangs); - } - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - } - - if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) { - if ($pagenb == $pageposafter) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); - } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); - } - $this->_pagefoot($pdf, $object, $outputlangs, 1); - // New page - $pdf->AddPage(); - if (!empty($tplidx)) { - $pdf->useTemplate($tplidx); - } - $pagenb++; - if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { - $this->_pagehead($pdf, $object, 0, $outputlangs); - } - } - } - - // Show square - if ($pagenb == $pageposbeforeprintlines) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code, $outputlangsbis); - $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; - } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code, $outputlangsbis); - $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; - } - - // Display infos area - //$posy = $this->drawInfoTable($pdf, $object, $bottomlasttab, $outputlangs); - - // Display total zone - //$posy = $this->drawTotalTable($pdf, $object, $deja_regle, $bottomlasttab, $outputlangs); - - // Display payment area - /* - if (($deja_regle || $amount_credit_notes_included || $amount_deposits_included) && empty($conf->global->INVOICE_NO_PAYMENT_DETAILS)) - { - $posy = $this->drawPaymentsTable($pdf, $object, $posy, $outputlangs); - } - */ - - // Pagefoot - $this->_pagefoot($pdf, $object, $outputlangs); - if (method_exists($pdf, 'AliasNbPages')) { - $pdf->AliasNbPages(); - } - - $pdf->Close(); - - $pdf->Output($file, 'F'); - - // Add pdfgeneration hook - $hookmanager->initHooks(array('pdfgeneration')); - $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs); - global $action; - $reshook = $hookmanager->executeHooks('afterPDFCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks - if ($reshook < 0) { - $this->error = $hookmanager->error; - $this->errors = $hookmanager->errors; - } - - if (!empty($conf->global->MAIN_UMASK)) { - @chmod($file, octdec($conf->global->MAIN_UMASK)); - } - - $this->result = array('fullpath'=>$file); - - return 1; // No error - } else { - $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); - return 0; - } - } else { - $this->error = $langs->transnoentities("ErrorConstantNotDefined", "FAC_OUTPUTDIR"); - return 0; - } - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - return parent::liste_modeles($db, $maxfilenamelength); // TODO: Change the autogenerated stub - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** - * Show table for lines - * - * @param tcpdf $pdf Object PDF - * @param string $tab_top Top position of table - * @param string $tab_height Height of table (rectangle) - * @param int $nexY Y (not used) - * @param Translate $outputlangs Langs object - * @param int $hidetop 1=Hide top bar of array and title, 0=Hide nothing, -1=Hide only title - * @param int $hidebottom Hide bottom bar of array - * @param string $currency Currency code - * @param Translate $outputlangsbis Langs object bis - * @return void - */ - protected function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0, $currency = '', $outputlangsbis = null) - { - global $conf; - - // Force to disable hidetop and hidebottom - $hidebottom = 0; - if ($hidetop) { - $hidetop = -1; - } - - $currency = !empty($currency) ? $currency : $conf->currency; - $default_font_size = pdf_getPDFFontSize($outputlangs); - - // Amount in (at tab_top - 1) - $pdf->SetTextColor(0, 0, 0); - $pdf->SetFont('', '', $default_font_size - 2); - - if (empty($hidetop)) { - $titre = $outputlangs->transnoentities("AmountInCurrency", $outputlangs->transnoentitiesnoconv("Currency".$currency)); - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { - $titre .= ' - '.$outputlangsbis->transnoentities("AmountInCurrency", $outputlangsbis->transnoentitiesnoconv("Currency".$currency)); - } - - $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 3), $tab_top - 4); - $pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre); - - //$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR='230,230,230'; - if (!empty($conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)) { - $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_droite - $this->marge_gauche, $this->tabTitleHeight, 'F', null, explode(',', $conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)); - } - } - - $pdf->SetDrawColor(128, 128, 128); - $pdf->SetFont('', '', $default_font_size - 1); - - // Output Rect - $this->printRect($pdf, $this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height, $hidetop, $hidebottom); // Rect takes a length in 3rd parameter and 4th parameter - - - $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop); - - if (empty($hidetop)) { - $pdf->line($this->marge_gauche, $tab_top + $this->tabTitleHeight, $this->page_largeur - $this->marge_droite, $tab_top + $this->tabTitleHeight); // line takes a position y in 2nd parameter and 4th parameter - } - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** - * Show top header of page. - * - * @param TCPDF $pdf Object PDF - * @param Object $object Object to show - * @param int $showaddress 0=no, 1=yes - * @param Translate $outputlangs Object lang for output - * @param Translate $outputlangsbis Object lang for output bis - * @return void - */ - protected function _pagehead(&$pdf, $object, $showaddress, $outputlangs, $outputlangsbis = null) - { - global $conf, $langs; - - // Load traductions files required by page - $outputlangs->loadLangs(array("main", "bills", "propal", "companies")); - - $default_font_size = pdf_getPDFFontSize($outputlangs); - - pdf_pagehead($pdf, $outputlangs, $this->page_hauteur); - - // Show Draft Watermark - if ($object->statut == $object::STATUS_DRAFT && getDolGlobalString('MYMODULE_DRAFT_WATERMARK')) { - pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', dol_escape_htmltag(getDolGlobalString('MYMODULE_DRAFT_WATERMARK'))); - } - - $pdf->SetTextColor(0, 0, 60); - $pdf->SetFont('', 'B', $default_font_size + 3); - - $w = 110; - - $posy = $this->marge_haute; - $posx = $this->page_largeur - $this->marge_droite - $w; - - $pdf->SetXY($this->marge_gauche, $posy); - - // Logo - if (empty($conf->global->PDF_DISABLE_MYCOMPANY_LOGO)) { - if ($this->emetteur->logo) { - $logodir = $conf->mycompany->dir_output; - if (!empty($conf->mycompany->multidir_output[$object->entity])) { - $logodir = $conf->mycompany->multidir_output[$object->entity]; - } - if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) { - $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small; - } else { - $logo = $logodir.'/logos/'.$this->emetteur->logo; - } - if (is_readable($logo)) { - $height = pdf_getHeightForLogo($logo); - $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) - } else { - $pdf->SetTextColor(200, 0, 0); - $pdf->SetFont('', 'B', $default_font_size - 2); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); - } - } else { - $text = $this->emetteur->name; - $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); - } - } - - $pdf->SetFont('', 'B', $default_font_size + 3); - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $title = $outputlangs->transnoentities("PdfTitle"); - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { - $title .= ' - '; - $title .= $outputlangsbis->transnoentities("PdfTitle"); - } - $pdf->MultiCell($w, 3, $title, '', 'R'); - - $pdf->SetFont('', 'B', $default_font_size); - - $posy += 5; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $textref = $outputlangs->transnoentities("Ref")." : ".$outputlangs->convToOutputCharset($object->ref); - if ($object->statut == $object::STATUS_DRAFT) { - $pdf->SetTextColor(128, 0, 0); - $textref .= ' - '.$outputlangs->transnoentities("NotValidated"); - } - $pdf->MultiCell($w, 4, $textref, '', 'R'); - - $posy += 1; - $pdf->SetFont('', '', $default_font_size - 2); - - if ($object->ref_client) { - $posy += 4; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); - } - - if (!empty($conf->global->PDF_SHOW_PROJECT_TITLE)) { - $object->fetch_projet(); - if (!empty($object->project->ref)) { - $posy += 3; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("Project")." : ".(empty($object->project->title) ? '' : $object->projet->title), '', 'R'); - } - } - - if (!empty($conf->global->PDF_SHOW_PROJECT)) { - $object->fetch_projet(); - if (!empty($object->project->ref)) { - $outputlangs->load("projects"); - $posy += 3; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefProject")." : ".(empty($object->project->ref) ? '' : $object->project->ref), '', 'R'); - } - } - - $posy += 4; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - - $title = $outputlangs->transnoentities("Date"); - if (!empty($conf->global->PDF_USE_ALSO_LANGUAGE_CODE) && is_object($outputlangsbis)) { - $title .= ' - '.$outputlangsbis->transnoentities("Date"); - } - $pdf->MultiCell($w, 3, $title." : ".dol_print_date($object->date, "day", false, $outputlangs), '', 'R'); - - if ($object->thirdparty->code_client) { - $posy += 3; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); - } - - // Get contact - if (!empty($conf->global->DOC_SHOW_FIRST_SALES_REP)) { - $arrayidcontact = $object->getIdContact('internal', 'SALESREPFOLL'); - if (count($arrayidcontact) > 0) { - $usertmp = new User($this->db); - $usertmp->fetch($arrayidcontact[0]); - $posy += 4; - $pdf->SetXY($posx, $posy); - $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell($w, 3, $langs->transnoentities("SalesRepresentative")." : ".$usertmp->getFullName($langs), '', 'R'); - } - } - - $posy += 1; - - $top_shift = 0; - // Show list of linked objects - $current_y = $pdf->getY(); - $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, $w, 3, 'R', $default_font_size); - if ($current_y < $pdf->getY()) { - $top_shift = $pdf->getY() - $current_y; - } - - if ($showaddress) { - // Sender properties - $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'source', $object); - - // Show sender - $posy = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; - $posy += $top_shift; - $posx = $this->marge_gauche; - if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) { - $posx = $this->page_largeur - $this->marge_droite - 80; - } - - $hautcadre = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 38 : 40; - $widthrecbox = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 82; - - - // Show sender frame - $pdf->SetTextColor(0, 0, 0); - $pdf->SetFont('', '', $default_font_size - 2); - $pdf->SetXY($posx, $posy - 5); - $pdf->MultiCell(66, 5, $outputlangs->transnoentities("BillFrom").":", 0, 'L'); - $pdf->SetXY($posx, $posy); - $pdf->SetFillColor(230, 230, 230); - $pdf->MultiCell($widthrecbox, $hautcadre, "", 0, 'R', 1); - $pdf->SetTextColor(0, 0, 60); - - // Show sender name - $pdf->SetXY($posx + 2, $posy + 3); - $pdf->SetFont('', 'B', $default_font_size); - $pdf->MultiCell($widthrecbox - 2, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); - $posy = $pdf->getY(); - - // Show sender information - $pdf->SetXY($posx + 2, $posy); - $pdf->SetFont('', '', $default_font_size - 1); - $pdf->MultiCell($widthrecbox - 2, 4, $carac_emetteur, 0, 'L'); - - // If BILLING contact defined on invoice, we use it - $usecontact = false; - $arrayidcontact = $object->getIdContact('external', 'BILLING'); - if (count($arrayidcontact) > 0) { - $usecontact = true; - $result = $object->fetch_contact($arrayidcontact[0]); - } - - // Recipient name - if ($object->contact->socid != $object->thirdparty->id && (!isset($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT) || !empty($conf->global->MAIN_USE_COMPANY_NAME_OF_CONTACT))) { - $thirdparty = $object->contact; - } else { - $thirdparty = $object->thirdparty; - } - - if (is_object($thirdparty)) { - $carac_client_name = pdfBuildThirdpartyName($thirdparty, $outputlangs); - } - - $carac_client = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, ($usecontact ? $object->contact : ''), $usecontact, 'target', $object); - - // Show recipient - $widthrecbox = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100; - if ($this->page_largeur < 210) { - $widthrecbox = 84; // To work with US executive format - } - $posy = !empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; - $posy += $top_shift; - $posx = $this->page_largeur - $this->marge_droite - $widthrecbox; - if (!empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) { - $posx = $this->marge_gauche; - } - - // Show recipient frame - $pdf->SetTextColor(0, 0, 0); - $pdf->SetFont('', '', $default_font_size - 2); - $pdf->SetXY($posx + 2, $posy - 5); - $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("BillTo").":", 0, 'L'); - $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); - - // Show recipient name - $pdf->SetXY($posx + 2, $posy + 3); - $pdf->SetFont('', 'B', $default_font_size); - $pdf->MultiCell($widthrecbox, 2, $carac_client_name, 0, 'L'); - - $posy = $pdf->getY(); - - // Show recipient information - $pdf->SetFont('', '', $default_font_size - 1); - $pdf->SetXY($posx + 2, $posy); - $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); - } - - $pdf->SetTextColor(0, 0, 0); - return $top_shift; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** - * Show footer of page. Need this->emetteur object - * - * @param TCPDF $pdf PDF - * @param Object $object Object to show - * @param Translate $outputlangs Object lang for output - * @param int $hidefreetext 1=Hide free text - * @return int Return height of bottom margin including footer text - */ - protected function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0) - { - global $conf; - $showdetails = empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? 0 : $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS; - return pdf_pagefoot($pdf, $outputlangs, 'INVOICE_FREE_TEXT', $this->emetteur, $this->marge_basse, $this->marge_gauche, $this->page_hauteur, $object, $showdetails, $hidefreetext); - } - - /** - * Define Array Column Field - * - * @param object $object common object - * @param Translate $outputlangs langs - * @param int $hidedetails Do not show line details - * @param int $hidedesc Do not show desc - * @param int $hideref Do not show ref - * @return null - */ - public function defineColumnField($object, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0) - { - global $conf, $hookmanager; - - // Default field style for content - $this->defaultContentsFieldsStyle = array( - 'align' => 'R', // R,C,L - 'padding' => array(1, 0.5, 1, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ); - - // Default field style for content - $this->defaultTitlesFieldsStyle = array( - 'align' => 'C', // R,C,L - 'padding' => array(0.5, 0, 0.5, 0), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ); - - /* - * For exemple - $this->cols['theColKey'] = array( - 'rank' => $rank, // int : use for ordering columns - 'width' => 20, // the column width in mm - 'title' => array( - 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label - 'label' => ' ', // the final label : used fore final generated text - 'align' => 'L', // text alignement : R,C,L - 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ), - 'content' => array( - 'align' => 'L', // text alignement : R,C,L - 'padding' => array(0.5,0.5,0.5,0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ), - ); - */ - - $rank = 0; // do not use negative rank - $this->cols['desc'] = array( - 'rank' => $rank, - 'width' => false, // only for desc - 'status' => true, - 'title' => array( - 'textkey' => 'Designation', // use lang key is usefull in somme case with module - 'align' => 'L', - // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label - // 'label' => ' ', // the final label - 'padding' => array(0.5, 0.5, 0.5, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ), - 'content' => array( - 'align' => 'L', - 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ), - ); - - // PHOTO - $rank = $rank + 10; - $this->cols['photo'] = array( - 'rank' => $rank, - 'width' => (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH) ? 20 : $conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH), // in mm - 'status' => false, - 'title' => array( - 'textkey' => 'Photo', - 'label' => ' ' - ), - 'content' => array( - 'padding' => array(0, 0, 0, 0), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left - ), - 'border-left' => false, // remove left line separator - ); - - if (!empty($conf->global->MAIN_GENERATE_INVOICES_WITH_PICTURE) && !empty($this->atleastonephoto)) { - $this->cols['photo']['status'] = true; - } - - - $rank = $rank + 10; - $this->cols['vat'] = array( - 'rank' => $rank, - 'status' => false, - 'width' => 16, // in mm - 'title' => array( - 'textkey' => 'VAT' - ), - 'border-left' => true, // add left line separator - ); - - if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT) && empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN)) { - $this->cols['vat']['status'] = true; - } - - $rank = $rank + 10; - $this->cols['subprice'] = array( - 'rank' => $rank, - 'width' => 19, // in mm - 'status' => true, - 'title' => array( - 'textkey' => 'PriceUHT' - ), - 'border-left' => true, // add left line separator - ); - - $rank = $rank + 10; - $this->cols['qty'] = array( - 'rank' => $rank, - 'width' => 16, // in mm - 'status' => true, - 'title' => array( - 'textkey' => 'Qty' - ), - 'border-left' => true, // add left line separator - ); - - $rank = $rank + 10; - $this->cols['progress'] = array( - 'rank' => $rank, - 'width' => 19, // in mm - 'status' => false, - 'title' => array( - 'textkey' => 'Progress' - ), - 'border-left' => true, // add left line separator - ); - - if ($this->situationinvoice) { - $this->cols['progress']['status'] = true; - } - - $rank = $rank + 10; - $this->cols['unit'] = array( - 'rank' => $rank, - 'width' => 11, // in mm - 'status' => false, - 'title' => array( - 'textkey' => 'Unit' - ), - 'border-left' => true, // add left line separator - ); - if (!empty($conf->global->PRODUCT_USE_UNITS)) { - $this->cols['unit']['status'] = true; - } - - $rank = $rank + 10; - $this->cols['discount'] = array( - 'rank' => $rank, - 'width' => 13, // in mm - 'status' => false, - 'title' => array( - 'textkey' => 'ReductionShort' - ), - 'border-left' => true, // add left line separator - ); - if ($this->atleastonediscount) { - $this->cols['discount']['status'] = true; - } - - $rank = $rank + 1000; // add a big offset to be sure is the last col because default extrafield rank is 100 - $this->cols['totalexcltax'] = array( - 'rank' => $rank, - 'width' => 26, // in mm - 'status' => true, - 'title' => array( - 'textkey' => 'TotalHT' - ), - 'border-left' => true, // add left line separator - ); - - // Add extrafields cols - if (!empty($object->lines)) { - $line = reset($object->lines); - $this->defineColumnExtrafield($line, $outputlangs, $hidedetails); - } - - $parameters = array( - 'object' => $object, - 'outputlangs' => $outputlangs, - 'hidedetails' => $hidedetails, - 'hidedesc' => $hidedesc, - 'hideref' => $hideref - ); - - $reshook = $hookmanager->executeHooks('defineColumnField', $parameters, $this); // Note that $object may have been modified by hook - if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - } elseif (empty($reshook)) { - $this->cols = array_replace($this->cols, $hookmanager->resArray); // array_replace is used to preserve keys - } else { - $this->cols = $hookmanager->resArray; - } - } -} diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php deleted file mode 100644 index cce647de..00000000 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ /dev/null @@ -1,146 +0,0 @@ - - * Copyright (C) 2004-2007 Laurent Destailleur - * Copyright (C) 2005-2009 Regis Houssin - * Copyright (C) 2008 Raphael Bertrand (Resultic) - * Copyright (C) 2019 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see https://www.gnu.org/ - */ - -/** - * \file htdocs/core/modules/mymodule/mod_myobject_advanced.php - * \ingroup mymodule - * \brief File containing class for advanced numbering model of MyObject - */ - -dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); - - -/** - * Class to manage the Advanced numbering rule for MyObject - */ -class mod_myobject_advanced extends ModeleNumRefMyObject -{ - /** - * Dolibarr version of the loaded document - * @var string - */ - public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' - - /** - * @var string Error message - */ - public $error = ''; - - /** - * @var string name - */ - public $name = 'advanced'; - - - /** - * Returns the description of the numbering model - * - * @return string Texte descripif - */ - public function info() - { - global $conf, $langs, $db; - - $langs->load("bills"); - - $form = new Form($db); - - $texte = $langs->trans('GenericNumRefModelDesc')."
    \n"; - $texte .= '
    '; - $texte .= ''; - $texte .= ''; - $texte .= ''; - $texte .= ''; - - $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("MyObject"), $langs->transnoentities("MyObject")); - $tooltip .= $langs->trans("GenericMaskCodes2"); - $tooltip .= $langs->trans("GenericMaskCodes3"); - $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("MyObject"), $langs->transnoentities("MyObject")); - $tooltip .= $langs->trans("GenericMaskCodes5"); - - // Parametrage du prefix - $texte .= ''; - $texte .= ''; - $texte .= ''; - $texte .= ''; - - $texte .= '
    '.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).' 
    '; - $texte .= '
    '; - - return $texte; - } - - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $conf, $db, $langs, $mysoc; - - $object = new MyObject($db); - $object->initAsSpecimen(); - - /*$old_code_client = $mysoc->code_client; - $old_code_type = $mysoc->typent_code; - $mysoc->code_client = 'CCCCCCCCCC'; - $mysoc->typent_code = 'TTTTTTTTTT';*/ - - $numExample = $this->getNextValue($object); - - /*$mysoc->code_client = $old_code_client; - $mysoc->typent_code = $old_code_type;*/ - - if (!$numExample) { - $numExample = $langs->trans('NotConfigured'); - } - return $numExample; - } - - /** - * Return next free value - * - * @param Object $object Object we need next value for - * @return string Value if KO, <0 if KO - */ - public function getNextValue($object) - { - global $db, $conf; - - require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - - // We get cursor rule - $mask = getDolGlobalString('MYMODULE_MYOBJECT_ADVANCED_MASK'); - - if (!$mask) { - $this->error = 'NotConfigured'; - return 0; - } - - $date = $object->date; - - $numFinal = get_next_value($db, $mask, 'mymodule_myobject', 'ref', '', null, $date); - - return $numFinal; - } -} diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php deleted file mode 100644 index f21ffe88..00000000 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_standard.php +++ /dev/null @@ -1,161 +0,0 @@ - - * Copyright (C) 2005-2009 Regis Houssin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see https://www.gnu.org/ - */ - -/** - * \file htdocs/core/modules/mymodule/mod_myobject_standard.php - * \ingroup mymodule - * \brief File of class to manage MyObject numbering rules standard - */ -dol_include_once('/mymodule/core/modules/mymodule/modules_myobject.php'); - - -/** - * Class to manage the Standard numbering rule for MyObject - */ -class mod_myobject_standard extends ModeleNumRefMyObject -{ - /** - * Dolibarr version of the loaded document - * @var string - */ - public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' - - public $prefix = 'MYOBJECT'; - - /** - * @var string Error code (or message) - */ - public $error = ''; - - /** - * @var string name - */ - public $name = 'standard'; - - - /** - * Return description of numbering module - * - * @return string Text with description - */ - public function info() - { - global $langs; - return $langs->trans("SimpleNumRefModelDesc", $this->prefix); - } - - - /** - * Return an example of numbering - * - * @return string Example - */ - public function getExample() - { - return $this->prefix."0501-0001"; - } - - - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @param Object $object Object we need next value for - * @return boolean false if conflict, true if ok - */ - public function canBeActivated($object) - { - global $conf, $langs, $db; - - $coyymm = ''; $max = ''; - - $posindice = strlen($this->prefix) + 6; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql .= " FROM ".MAIN_DB_PREFIX."mymodule_myobject"; - $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - if ($object->ismultientitymanaged == 1) { - $sql .= " AND entity = ".$conf->entity; - } elseif ($object->ismultientitymanaged == 2) { - // TODO - } - - $resql = $db->query($sql); - if ($resql) { - $row = $db->fetch_row($resql); - if ($row) { - $coyymm = substr($row[0], 0, 6); $max = $row[0]; - } - } - if ($coyymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) { - $langs->load("errors"); - $this->error = $langs->trans('ErrorNumRefModel', $max); - return false; - } - - return true; - } - - /** - * Return next free value - * - * @param Object $object Object we need next value for - * @return string Value if KO, <0 if KO - */ - public function getNextValue($object) - { - global $db, $conf; - - // first we get the max value - $posindice = strlen($this->prefix) + 6; - $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; - $sql .= " FROM ".MAIN_DB_PREFIX."mymodule_myobject"; - $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; - if ($object->ismultientitymanaged == 1) { - $sql .= " AND entity = ".$conf->entity; - } elseif ($object->ismultientitymanaged == 2) { - // TODO - } - - $resql = $db->query($sql); - if ($resql) { - $obj = $db->fetch_object($resql); - if ($obj) { - $max = intval($obj->max); - } else { - $max = 0; - } - } else { - dol_syslog("mod_myobject_standard::getNextValue", LOG_DEBUG); - return -1; - } - - //$date=time(); - $date = $object->date_creation; - $yymm = strftime("%y%m", $date); - - if ($max >= (pow(10, 4) - 1)) { - $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is - } else { - $num = sprintf("%04s", $max + 1); - } - - dol_syslog("mod_myobject_standard::getNextValue return ".$this->prefix.$yymm."-".$num); - return $this->prefix.$yymm."-".$num; - } -} diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php b/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php deleted file mode 100644 index c2eeb232..00000000 --- a/htdocs/modulebuilder/template/core/modules/mymodule/modules_myobject.php +++ /dev/null @@ -1,194 +0,0 @@ - - * Copyright (C) 2004-2011 Laurent Destailleur - * Copyright (C) 2004 Eric Seigne - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2012 Juanjo Menent - * Copyright (C) 2014 Marcos García - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * or see https://www.gnu.org/ - */ - -/** - * \file htdocs/core/modules/mymodule/modules_myobject.php - * \ingroup mymodule - * \brief File that contains parent class for myobjects document models and parent class for myobjects numbering models - */ - -require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // required for use by classes that inherit - - -/** - * Parent class for documents models - */ -abstract class ModelePDFMyObject extends CommonDocGenerator -{ - - /** - * @var int page_largeur - */ - public $page_largeur; - - /** - * @var int page_hauteur - */ - public $page_hauteur; - - /** - * @var array format - */ - public $format; - - /** - * @var int marge_gauche - */ - public $marge_gauche; - - /** - * @var int marge_droite - */ - public $marge_droite; - - /** - * @var int marge_haute - */ - public $marge_haute; - - /** - * @var int marge_basse - */ - public $marge_basse; - - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return list of active generation modules - * - * @param DoliDB $db Database handler - * @param integer $maxfilenamelength Max length of value to show - * @return array List of templates - */ - public static function liste_modeles($db, $maxfilenamelength = 0) - { - // phpcs:enable - global $conf; - - $type = 'myobject'; - $list = array(); - - include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - $list = getListOfModels($db, $type, $maxfilenamelength); - - return $list; - } -} - - - -/** - * Parent class to manage numbering of MyObject - */ -abstract class ModeleNumRefMyObject -{ - /** - * @var string Error code (or message) - */ - public $error = ''; - - /** - * Return if a module can be used or not - * - * @return boolean true if module can be used - */ - public function isEnabled() - { - return true; - } - - /** - * Returns the default description of the numbering template - * - * @return string Texte descripif - */ - public function info() - { - global $langs; - $langs->load("mymodule@mymodule"); - return $langs->trans("NoDescription"); - } - - /** - * Returns an example of numbering - * - * @return string Example - */ - public function getExample() - { - global $langs; - $langs->load("mymodule@mymodule"); - return $langs->trans("NoExample"); - } - - /** - * Checks if the numbers already in the database do not - * cause conflicts that would prevent this numbering working. - * - * @param Object $object Object we need next value for - * @return boolean false if conflict, true if ok - */ - public function canBeActivated($object) - { - return true; - } - - /** - * Returns next assigned value - * - * @param Object $object Object we need next value for - * @return string Valeur - */ - public function getNextValue($object) - { - global $langs; - return $langs->trans("NotAvailable"); - } - - /** - * Returns version of numbering module - * - * @return string Valeur - */ - public function getVersion() - { - global $langs; - $langs->load("admin"); - - if ($this->version == 'development') { - return $langs->trans("VersionDevelopment"); - } - if ($this->version == 'experimental') { - return $langs->trans("VersionExperimental"); - } - if ($this->version == 'dolibarr') { - return DOL_VERSION; - } - if ($this->version) { - return $this->version; - } - return $langs->trans("NotAvailable"); - } -} diff --git a/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php b/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php deleted file mode 100644 index 21cb16c3..00000000 --- a/htdocs/modulebuilder/template/core/tpl/linkedobjectblock_myobject.tpl.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// Protection to avoid direct call of template -if (empty($conf) || !is_object($conf)) { - print "Error, template page can't be called as URL"; - exit; -} - - -print "\n"; - - -global $user; -global $noMoreLinkedObjectBlockAfter; - -$langs = $GLOBALS['langs']; -$linkedObjectBlock = $GLOBALS['linkedObjectBlock']; - -// Load translation files required by the page -$langs->load("mymodule"); - -$total = 0; $ilink = 0; -foreach ($linkedObjectBlock as $key => $objectlink) { - $ilink++; - - $trclass = 'oddeven'; - if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) { - $trclass .= ' liste_sub_total'; - } - ?> -
    trans("MyObject"); ?>getNomUrl(1); ?>date, 'day'); ?>getLibStatut(7); ?>">transnoentitiesnoconv("RemoveLink"), 'unlink'); ?>
    '; - print ''; - print ''; - - $var = true; - if ($num > 0) - { - $i = 0; - while ($i < $num) - { - - $obj = $db->fetch_object($resql); - print ''; - print ''; - print ''; - $i++; - $total += $obj->total_ttc; - } - if ($total>0) - { - - print '"; - } - } - else - { - - print ''; - } - print "
    '.$langs->trans("DraftMyObjects").($num?''.$num.'':'').'
    '; - - $myobjectstatic->id=$obj->rowid; - $myobjectstatic->ref=$obj->ref; - $myobjectstatic->ref_client=$obj->ref_client; - $myobjectstatic->total_ht = $obj->total_ht; - $myobjectstatic->total_tva = $obj->total_tva; - $myobjectstatic->total_ttc = $obj->total_ttc; - - print $myobjectstatic->getNomUrl(1); - print ''; - print ''.price($obj->total_ttc).'
    '.$langs->trans("Total").''.price($total)."
    '.$langs->trans("NoOrder").'

    "; - - $db->free($resql); - } - else - { - dol_print_error($db); - } -} -END MODULEBUILDER DRAFT MYOBJECT */ - - -print '
    '; - - -$NBMAX = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT; -$max = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT; - -/* BEGIN MODULEBUILDER LASTMODIFIED MYOBJECT -// Last modified myobject -if (isModEnabled('mymodule') && $user->rights->mymodule->read) -{ - $sql = "SELECT s.rowid, s.ref, s.label, s.date_creation, s.tms"; - $sql.= " FROM ".MAIN_DB_PREFIX."mymodule_myobject as s"; - //if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE s.entity IN (".getEntity($myobjectstatic->element).")"; - //if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id); - //if ($socid) $sql.= " AND s.rowid = $socid"; - $sql .= " ORDER BY s.tms DESC"; - $sql .= $db->plimit($max, 0); - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - - print ''; - print ''; - print ''; - print ''; - print ''; - if ($num) - { - while ($i < $num) - { - $objp = $db->fetch_object($resql); - - $myobjectstatic->id=$objp->rowid; - $myobjectstatic->ref=$objp->ref; - $myobjectstatic->label=$objp->label; - $myobjectstatic->status = $objp->status; - - print ''; - print ''; - print '"; - print '"; - print ''; - $i++; - } - - $db->free($resql); - } else { - print ''; - } - print "
    '; - print $langs->trans("BoxTitleLatestModifiedMyObjects", $max); - print ''.$langs->trans("DateModificationShort").'
    '.$myobjectstatic->getNomUrl(1).''; - print "'.dol_print_date($db->jdate($objp->tms), 'day')."
    '.$langs->trans("None").'

    "; - } -} -*/ - -print '
    '; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php deleted file mode 100644 index 6abb64d7..00000000 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ /dev/null @@ -1,321 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_agenda.php - * \ingroup mymodule - * \brief Tab of events on MyObject - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -dol_include_once('/mymodule/class/myobject.class.php'); -dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "other")); - -// Get parameters -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action', 'aZ09'); -$cancel = GETPOST('cancel', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - -if (GETPOST('actioncode', 'array')) { - $actioncode = GETPOST('actioncode', 'array', 3); - if (!count($actioncode)) { - $actioncode = '0'; - } -} else { - $actioncode = GETPOST("actioncode", "alpha", 3) ? GETPOST("actioncode", "alpha", 3) : (GETPOST("actioncode") == '0' ? '0' : (empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT) ? '' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE_FOR_OBJECT)); -} -$search_rowid = GETPOST('search_rowid'); -$search_agenda_label = GETPOST('search_agenda_label'); - -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1) { - $page = 0; -} // If $page is not defined, or '' or -1 -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -if (!$sortfield) { - $sortfield = 'a.datep,a.id'; -} -if (!$sortorder) { - $sortorder = 'DESC,DESC'; -} - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectagenda', 'globalcard')); // Note that conf->hooks_modules contains array -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -// Load object -include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals -if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->mymodule->multidir_output[!empty($object->entity) ? $object->entity : $conf->entity]."/".$object->id; -} - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->rights->mymodule->myobject->read; - $permissiontoadd = $user->rights->mymodule->myobject->write; -} else { - $permissiontoread = 1; - $permissiontoadd = 1; -} - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden(); -} -if (!$permissiontoread) accessforbidden(); - - -/* - * Actions - */ - -$parameters = array('id'=>$id); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} - -if (empty($reshook)) { - // Cancel - if (GETPOST('cancel', 'alpha') && !empty($backtopage)) { - header("Location: ".$backtopage); - exit; - } - - // Purge search criteria - if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers - $actioncode = ''; - $search_agenda_label = ''; - } -} - - - -/* - * View - */ - -$form = new Form($db); - -if ($object->id > 0) { - $title = $langs->trans("Agenda"); - //if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/',$conf->global->MAIN_HTML_TITLE) && $object->name) $title=$object->name." - ".$title; - $help_url = 'EN:Module_Agenda_En'; - llxHeader('', $title, $help_url); - - if (isModEnabled('notification')) { - $langs->load("mails"); - } - $head = myobjectPrepareHead($object); - - - print dol_get_fiche_head($head, 'agenda', $langs->trans("MyObject"), -1, $object->picto); - - // Object card - // ------------------------------------------------------------ - $linkback = ''.$langs->trans("BackToList").''; - - $morehtmlref = '
    '; - /* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
    '.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); - // Project - if (!empty($conf->project->enabled)) { - $langs->load("projects"); - $morehtmlref.='
    '.$langs->trans('Project') . ' '; - if ($permissiontoadd) { - if ($action != 'classify') { - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - } - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
    '; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (!empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref .= ': '.$proj->getNomUrl(); - } else { - $morehtmlref .= ''; - } - } - }*/ - $morehtmlref .= '
    '; - - - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - - print '
    '; - print '
    '; - - $object->info($object->id); - dol_print_object_info($object, 1); - - print '
    '; - - print dol_get_fiche_end(); - - - - // Actions buttons - - $objthirdparty = $object; - $objcon = new stdClass(); - - $out = '&origin='.urlencode($object->element.'@'.$object->module).'&originid='.urlencode($object->id); - $urlbacktopage = $_SERVER['PHP_SELF'].'?id='.$object->id; - $out .= '&backtopage='.urlencode($urlbacktopage); - $permok = $user->rights->agenda->myactions->create; - if ((!empty($objthirdparty->id) || !empty($objcon->id)) && $permok) { - //$out.='trans("AddAnAction"),'filenew'); - //$out.=""; - } - - $morehtmlright = ''; - - //$messagingUrl = DOL_URL_ROOT.'/societe/messaging.php?socid='.$object->id; - //$morehtmlright .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1); - //$messagingUrl = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; - //$morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2); - - if (isModEnabled('agenda')) { - if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { - $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out); - } else { - $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out, '', 0); - } - } - - - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - print '
    '; - - $param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : ''); - if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { - $param .= '&contextpage='.urlencode($contextpage); - } - if ($limit > 0 && $limit != $conf->liste_limit) { - $param .= '&limit='.urlencode($limit); - } - - //print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); - print_barre_liste($langs->trans("ActionsOnMyObject"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1); - - // List of all actions - $filters = array(); - $filters['search_agenda_label'] = $search_agenda_label; - $filters['search_rowid'] = $search_rowid; - - // TODO Replace this with same code than into list.php - show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, $object->module); - } -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php deleted file mode 100644 index dc8dafd4..00000000 --- a/htdocs/modulebuilder/template/myobject_card.php +++ /dev/null @@ -1,621 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_card.php - * \ingroup mymodule - * \brief Page to create/edit/view myobject - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification -//if (! defined('NOSESSION')) define('NOSESSION', '1'); // Disable session - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; -dol_include_once('/mymodule/class/myobject.class.php'); -dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "other")); - -// Get parameters -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); -$lineid = GETPOST('lineid', 'int'); - -$action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm', 'alpha'); -$cancel = GETPOST('cancel', 'aZ09'); -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search -$backtopage = GETPOST('backtopage', 'alpha'); -$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); -$dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectcard', 'globalcard')); // Note that conf->hooks_modules contains array - -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); - -// Initialize array of search criterias -$search_all = GETPOST("search_all", 'alpha'); -$search = array(); -foreach ($object->fields as $key => $val) { - if (GETPOST('search_'.$key, 'alpha')) { - $search[$key] = GETPOST('search_'.$key, 'alpha'); - } -} - -if (empty($action) && empty($id) && empty($ref)) { - $action = 'view'; -} - -// Load object -include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once. - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->hasRight('mymodule', 'myobject', 'read'); - $permissiontoadd = $user->hasRight('mymodule', 'myobject', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php - $permissiontodelete = $user->hasRight('mymodule', 'myobject', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT); - $permissionnote = $user->hasRight('mymodule', 'myobject', 'write'); // Used by the include of actions_setnotes.inc.php - $permissiondellink = $user->hasRight('mymodule', 'myobject', 'write'); // Used by the include of actions_dellink.inc.php -} else { - $permissiontoread = 1; - $permissiontoadd = 1; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php - $permissiontodelete = 1; - $permissionnote = 1; - $permissiondellink = 1; -} - -$upload_dir = $conf->mymodule->multidir_output[isset($object->entity) ? $object->entity : 1].'/myobject'; - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (isset($object->status) && ($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden(); -} -if (!$permissiontoread) { - accessforbidden(); -} - - -/* - * Actions - */ - -$parameters = array(); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} - -if (empty($reshook)) { - $error = 0; - - $backurlforlist = dol_buildpath('/mymodule/myobject_list.php', 1); - - if (empty($backtopage) || ($cancel && empty($id))) { - if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) { - if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) { - $backtopage = $backurlforlist; - } else { - $backtopage = dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.((!empty($id) && $id > 0) ? $id : '__ID__'); - } - } - } - - $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record - - // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen - include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; - - // Actions when linking object each other - include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; - - // Actions when printing a doc from card - include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; - - // Action to move up and down lines of object - //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php'; - - // Action to build doc - include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; - - if ($action == 'set_thirdparty' && $permissiontoadd) { - $object->setValueFrom('fk_soc', GETPOST('fk_soc', 'int'), '', '', 'date', '', $user, $triggermodname); - } - if ($action == 'classin' && $permissiontoadd) { - $object->setProject(GETPOST('projectid', 'int')); - } - - // Actions to send emails - $triggersendname = 'MYMODULE_MYOBJECT_SENTBYMAIL'; - $autocopy = 'MAIN_MAIL_AUTOCOPY_MYOBJECT_TO'; - $trackid = 'myobject'.$object->id; - include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; -} - - - - -/* - * View - * - * Put here all code to build page - */ - -$form = new Form($db); -$formfile = new FormFile($db); -$formproject = new FormProjets($db); - -$title = $langs->trans("MyObject"); -$help_url = ''; -llxHeader('', $title, $help_url); - -// Example : Adding jquery code -// print ''; - - -// Part to create -if ($action == 'create') { - if (empty($permissiontoadd)) { - accessforbidden('NotEnoughPermissions', 0, 1); - } - - print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("MyObject")), '', 'object_'.$object->picto); - - print '
    '; - print ''; - print ''; - if ($backtopage) { - print ''; - } - if ($backtopageforcancel) { - print ''; - } - - print dol_get_fiche_head(array(), ''); - - // Set some default values - //if (! GETPOSTISSET('fieldname')) $_POST['fieldname'] = 'myvalue'; - - print ''."\n"; - - // Common attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php'; - - // Other attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; - - print '
    '."\n"; - - print dol_get_fiche_end(); - - print $form->buttonsSaveCancel("Create"); - - print '
    '; - - //dol_set_focus('input[name="ref"]'); -} - -// Part to edit record -if (($id || $ref) && $action == 'edit') { - print load_fiche_titre($langs->trans("MyObject"), '', 'object_'.$object->picto); - - print '
    '; - print ''; - print ''; - print ''; - if ($backtopage) { - print ''; - } - if ($backtopageforcancel) { - print ''; - } - - print dol_get_fiche_head(); - - print ''."\n"; - - // Common attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; - - // Other attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; - - print '
    '; - - print dol_get_fiche_end(); - - print $form->buttonsSaveCancel(); - - print '
    '; -} - -// Part to show record -if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { - $head = myobjectPrepareHead($object); - - print dol_get_fiche_head($head, 'card', $langs->trans("MyObject"), -1, $object->picto); - - $formconfirm = ''; - - // Confirmation to delete - if ($action == 'delete') { - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteMyObject'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1); - } - // Confirmation to delete line - if ($action == 'deleteline') { - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1); - } - - // Clone confirmation - if ($action == 'clone') { - // Create an array for form - $formquestion = array(); - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1); - } - - // Confirmation of action xxxx (You can use it for xxx = 'close', xxx = 'reopen', ...) - if ($action == 'xxx') { - $text = $langs->trans('ConfirmActionMyObject', $object->ref); - /*if (isModEnabled('notification')) - { - require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php'; - $notify = new Notify($db); - $text .= '
    '; - $text .= $notify->confirmMessage('MYOBJECT_CLOSE', $object->socid, $object); - }*/ - - $formquestion = array(); - - /* - $forcecombo=0; - if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy - $formquestion = array( - // 'text' => $langs->trans("ConfirmClone"), - // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1), - // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1), - // array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo)) - ); - */ - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220); - } - - // Call Hook formConfirm - $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); - $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if (empty($reshook)) { - $formconfirm .= $hookmanager->resPrint; - } elseif ($reshook > 0) { - $formconfirm = $hookmanager->resPrint; - } - - // Print form confirm - print $formconfirm; - - - // Object card - // ------------------------------------------------------------ - $linkback = ''.$langs->trans("BackToList").''; - - $morehtmlref = '
    '; - /* - // Ref customer - $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, $usercancreate, 'string', '', 0, 1); - $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, $usercancreate, 'string'.(isset($conf->global->THIRDPARTY_REF_INPUT_SIZE) ? ':'.$conf->global->THIRDPARTY_REF_INPUT_SIZE : ''), '', null, null, '', 1); - // Thirdparty - $morehtmlref .= '
    '.$object->thirdparty->getNomUrl(1, 'customer'); - if (empty($conf->global->MAIN_DISABLE_OTHER_LINK) && $object->thirdparty->id > 0) { - $morehtmlref .= ' ('.$langs->trans("OtherOrders").')'; - } - // Project - if (isModEnabled('project')) { - $langs->load("projects"); - $morehtmlref .= '
    '; - if ($permissiontoadd) { - $morehtmlref .= img_picto($langs->trans("Project"), 'project', 'class="pictofixedwidth"'); - if ($action != 'classify') { - $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' '; - } - $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, ($action == 'classify' ? 'projectid' : 'none'), 0, 0, 0, 1, '', 'maxwidth300'); - } else { - if (!empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref .= $proj->getNomUrl(1); - if ($proj->title) { - $morehtmlref .= ' - '.dol_escape_htmltag($proj->title).''; - } - } - } - } - */ - $morehtmlref .= '
    '; - - - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - - - print '
    '; - print '
    '; - print '
    '; - print ''."\n"; - - // Common attributes - //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field - //unset($object->fields['fk_project']); // Hide field already shown in banner - //unset($object->fields['fk_soc']); // Hide field already shown in banner - include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php'; - - // Other attributes. Fields from hook formObjectOptions and Extrafields. - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php'; - - print '
    '; - print '
    '; - print '
    '; - - print '
    '; - - print dol_get_fiche_end(); - - - /* - * Lines - */ - - if (!empty($object->table_element_line)) { - // Show object lines - $result = $object->getLinesArray(); - - print '
    - - - - - - '; - - if (!empty($conf->use_javascript_ajax) && $object->status == 0) { - include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; - } - - print '
    '; - if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) { - print ''; - } - - if (!empty($object->lines)) { - $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1); - } - - // Form to add new line - if ($object->status == 0 && $permissiontoadd && $action != 'selectlines') { - if ($action != 'editline') { - // Add products/services form - - $parameters = array(); - $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - if (empty($reshook)) - $object->formAddObjectLine(1, $mysoc, $soc); - } - } - - if (!empty($object->lines) || ($object->status == $object::STATUS_DRAFT && $permissiontoadd && $action != 'selectlines' && $action != 'editline')) { - print '
    '; - } - print '
    '; - - print "
    \n"; - } - - - // Buttons for actions - - if ($action != 'presend' && $action != 'editline') { - print '
    '."\n"; - $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - } - - if (empty($reshook)) { - // Send - if (empty($user->socid)) { - print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&token='.newToken().'&mode=init#formmailbeforetitle'); - } - - // Back to draft - if ($object->status == $object::STATUS_VALIDATED) { - print dolGetButtonAction('', $langs->trans('SetToDraft'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=confirm_setdraft&confirm=yes&token='.newToken(), '', $permissiontoadd); - } - - print dolGetButtonAction('', $langs->trans('Modify'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken(), '', $permissiontoadd); - - // Validate - if ($object->status == $object::STATUS_DRAFT) { - if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) { - print dolGetButtonAction('', $langs->trans('Validate'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=confirm_validate&confirm=yes&token='.newToken(), '', $permissiontoadd); - } else { - $langs->load("errors"); - print dolGetButtonAction($langs->trans("ErrorAddAtLeastOneLineFirst"), $langs->trans("Validate"), 'default', '#', '', 0); - } - } - - // Clone - if ($permissiontoadd) { - print dolGetButtonAction('', $langs->trans('ToClone'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.(!empty($object->socid)?'&socid='.$object->socid:'').'&action=clone&token='.newToken(), '', $permissiontoadd); - } - - /* - if ($permissiontoadd) { - if ($object->status == $object::STATUS_ENABLED) { - print dolGetButtonAction('', $langs->trans('Disable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=disable&token='.newToken(), '', $permissiontoadd); - } else { - print dolGetButtonAction('', $langs->trans('Enable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken(), '', $permissiontoadd); - } - } - if ($permissiontoadd) { - if ($object->status == $object::STATUS_VALIDATED) { - print dolGetButtonAction('', $langs->trans('Cancel'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=close&token='.newToken(), '', $permissiontoadd); - } else { - print dolGetButtonAction('', $langs->trans('Re-Open'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=reopen&token='.newToken(), '', $permissiontoadd); - } - } - */ - - // Delete - $params = array(); - print dolGetButtonAction('', $langs->trans("Delete"), 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete, $params); - } - print '
    '."\n"; - } - - - // Select mail models is same action as presend - if (GETPOST('modelselected')) { - $action = 'presend'; - } - - if ($action != 'presend') { - print '
    '; - print ''; // ancre - - $includedocgeneration = 0; - - // Documents - if ($includedocgeneration) { - $objref = dol_sanitizeFileName($object->ref); - $relativepath = $objref.'/'.$objref.'.pdf'; - $filedir = $conf->mymodule->dir_output.'/'.$object->element.'/'.$objref; - $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id; - $genallowed = $permissiontoread; // If you can read, you can build the PDF to read content - $delallowed = $permissiontoadd; // If you can create/edit, you can remove a file on card - print $formfile->showdocuments('mymodule:MyObject', $object->element.'/'.$objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang); - } - - // Show links to link elements - $linktoelem = $form->showLinkToObjectBlock($object, null, array('myobject')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); - - - print '
    '; - - $MAXEVENT = 10; - - $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', dol_buildpath('/mymodule/myobject_agenda.php', 1).'?id='.$object->id); - - // List of actions on element - include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; - $formactions = new FormActions($db); - $somethingshown = $formactions->showactions($object, $object->element.'@'.$object->module, (is_object($object->thirdparty) ? $object->thirdparty->id : 0), 1, '', $MAXEVENT, '', $morehtmlcenter); - - print '
    '; - } - - //Select mail models is same action as presend - if (GETPOST('modelselected')) { - $action = 'presend'; - } - - // Presend form - $modelmail = 'myobject'; - $defaulttopic = 'InformationMessage'; - $diroutput = $conf->mymodule->dir_output; - $trackid = 'myobject'.$object->id; - - include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php'; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_contact.php b/htdocs/modulebuilder/template/myobject_contact.php deleted file mode 100644 index 95682012..00000000 --- a/htdocs/modulebuilder/template/myobject_contact.php +++ /dev/null @@ -1,228 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_contact.php - * \ingroup mymodule - * \brief Tab for contacts linked to MyObject - */ - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; -dol_include_once('/mymodule/class/myobject.class.php'); -dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "companies", "other", "mails")); - -$id = (GETPOST('id') ?GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility -$ref = GETPOST('ref', 'alpha'); -$lineid = GETPOST('lineid', 'int'); -$socid = GETPOST('socid', 'int'); -$action = GETPOST('action', 'aZ09'); - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectcontact', 'globalcard')); // Note that conf->hooks_modules contains array -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -// Load object -include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->rights->mymodule->myobject->read; - $permission = $user->rights->mymodule->myobject->write; -} else { - $permissiontoread = 1; - $permission = 1; -} - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden(); -} -if (!$permissiontoread) accessforbidden(); - - -/* - * Add a new contact - */ - -if ($action == 'addcontact' && $permission) { - $contactid = (GETPOST('userid') ? GETPOST('userid', 'int') : GETPOST('contactid', 'int')); - $typeid = (GETPOST('typecontact') ? GETPOST('typecontact') : GETPOST('type')); - $result = $object->add_contact($contactid, $typeid, GETPOST("source", 'aZ09')); - - if ($result >= 0) { - header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); - exit; - } else { - if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), null, 'errors'); - } else { - setEventMessages($object->error, $object->errors, 'errors'); - } - } -} elseif ($action == 'swapstatut' && $permission) { - // Toggle the status of a contact - $result = $object->swapContactStatus(GETPOST('ligne', 'int')); -} elseif ($action == 'deletecontact' && $permission) { - // Deletes a contact - $result = $object->delete_contact($lineid); - - if ($result >= 0) { - header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); - exit; - } else { - dol_print_error($db); - } -} - - -/* - * View - */ - -$title = $langs->trans('MyObject')." - ".$langs->trans('ContactsAddresses'); -$help_url = ''; -//$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('', $title, $help_url); - -$form = new Form($db); -$formcompany = new FormCompany($db); -$contactstatic = new Contact($db); -$userstatic = new User($db); - - -/* *************************************************************************** */ -/* */ -/* View and edit mode */ -/* */ -/* *************************************************************************** */ - -if ($object->id) { - /* - * Show tabs - */ - $head = myobjectPrepareHead($object); - - print dol_get_fiche_head($head, 'contact', $langs->trans("MyObject"), -1, $object->picto); - - $linkback = ''.$langs->trans("BackToList").''; - - $morehtmlref = '
    '; - /* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
    '.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); - // Project - if (!empty($conf->project->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
    '.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
    '; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (!empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref .= ': '.$proj->getNomUrl(); - } else { - $morehtmlref .= ''; - } - } - }*/ - $morehtmlref .= '
    '; - - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', '', 1); - - print dol_get_fiche_end(); - - print '
    '; - - // Contacts lines (modules that overwrite templates must declare this into descriptor) - $dirtpls = array_merge($conf->modules_parts['tpl'], array('/core/tpl')); - foreach ($dirtpls as $reldir) { - $res = @include dol_buildpath($reldir.'/contacts.tpl.php'); - if ($res) { - break; - } - } -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php deleted file mode 100644 index ff1756e2..00000000 --- a/htdocs/modulebuilder/template/myobject_document.php +++ /dev/null @@ -1,261 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_document.php - * \ingroup mymodule - * \brief Tab for documents linked to MyObject - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -dol_include_once('/mymodule/class/myobject.class.php'); -dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "companies", "other", "mails")); - - -$action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm'); -$id = (GETPOST('socid', 'int') ? GETPOST('socid', 'int') : GETPOST('id', 'int')); -$ref = GETPOST('ref', 'alpha'); - -// Get parameters -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1) { - $page = 0; -} // If $page is not defined, or '' or -1 -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -if (!$sortorder) { - $sortorder = "ASC"; -} -if (!$sortfield) { - $sortfield = "name"; -} -//if (! $sortfield) $sortfield="position_name"; - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectdocument', 'globalcard')); // Note that conf->hooks_modules contains array -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -// Load object -include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals - -if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->mymodule->multidir_output[$object->entity ? $object->entity : $conf->entity]."/myobject/".get_exdir(0, 0, 0, 1, $object); -} - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->rights->mymodule->myobject->read; - $permissiontoadd = $user->rights->mymodule->myobject->write; // Used by the include of actions_addupdatedelete.inc.php and actions_linkedfiles.inc.php -} else { - $permissiontoread = 1; - $permissiontoadd = 1; -} - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden(); -} -if (!$permissiontoread) { - accessforbidden(); -} -if (empty($object->id)) { - accessforbidden(); -} - - - -/* - * Actions - */ - -include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; - - -/* - * View - */ - -$form = new Form($db); - -$title = $langs->trans("MyObject").' - '.$langs->trans("Files"); -$help_url = ''; -//$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('', $title, $help_url); - -// Show tabs -$head = myobjectPrepareHead($object); - -print dol_get_fiche_head($head, 'document', $langs->trans("MyObject"), -1, $object->picto); - - -// Build file list -$filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); -$totalsize = 0; -foreach ($filearray as $key => $file) { - $totalsize += $file['size']; -} - -// Object card -// ------------------------------------------------------------ -$linkback = ''.$langs->trans("BackToList").''; - -$morehtmlref = '
    '; -/* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
    '.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); - // Project - if (!empty($conf->project->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
    '.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
    '; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (!empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref .= ': '.$proj->getNomUrl(); - } else { - $morehtmlref .= ''; - } - } - }*/ -$morehtmlref .= '
    '; - -dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - -print '
    '; - -print '
    '; -print ''; - -// Number of files -print ''; - -// Total size -print ''; - -print '
    '.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
    '.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
    '; - -print '
    '; - -print dol_get_fiche_end(); - -$modulepart = 'mymodule'; -//$permissiontoadd = $user->rights->mymodule->myobject->write; -$permissiontoadd = 1; -//$permtoedit = $user->rights->mymodule->myobject->write; -$permtoedit = 1; -$param = '&id='.$object->id; - -//$relativepathwithnofile='myobject/' . dol_sanitizeFileName($object->id).'/'; -$relativepathwithnofile = 'myobject/'.dol_sanitizeFileName($object->ref).'/'; - -include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php deleted file mode 100644 index abef03f2..00000000 --- a/htdocs/modulebuilder/template/myobject_list.php +++ /dev/null @@ -1,850 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_list.php - * \ingroup mymodule - * \brief List page for myobject - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification -//if (! defined('NOSESSION')) define('NOSESSION', '1'); // On CLI mode, no need to use web sessions - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; - $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; - -// load mymodule libraries -require_once __DIR__.'/class/myobject.class.php'; - -// for other modules -//dol_include_once('/othermodule/class/otherobject.class.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "other")); - -$action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', 'edit'/'update', 'view', ... -$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) -$show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ? -$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation -$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button -$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search -$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') -$mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...) - -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); - -// Load variable for pagination -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) { - // If $page is not defined, or '' or -1 or if we click on clear filters - $page = 0; -} -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectlist')); // Note that conf->hooks_modules contains array - -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); -//$extrafields->fetch_name_optionals_label($object->table_element_line); - -$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); - -// Default sort order (if not yet defined by previous GETPOST) -if (!$sortfield) { - reset($object->fields); // Reset is required to avoid key() to return null. - $sortfield = "t.".key($object->fields); // Set here default search field. By default 1st field in definition. -} -if (!$sortorder) { - $sortorder = "ASC"; -} - -// Initialize array of search criterias -$search_all = GETPOST('search_all', 'alphanohtml') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'); -$search = array(); -foreach ($object->fields as $key => $val) { - if (GETPOST('search_'.$key, 'alpha') !== '') { - $search[$key] = GETPOST('search_'.$key, 'alpha'); - } - if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - $search[$key.'_dtstart'] = dol_mktime(0, 0, 0, GETPOST('search_'.$key.'_dtstartmonth', 'int'), GETPOST('search_'.$key.'_dtstartday', 'int'), GETPOST('search_'.$key.'_dtstartyear', 'int')); - $search[$key.'_dtend'] = dol_mktime(23, 59, 59, GETPOST('search_'.$key.'_dtendmonth', 'int'), GETPOST('search_'.$key.'_dtendday', 'int'), GETPOST('search_'.$key.'_dtendyear', 'int')); - } -} - -// List of fields to search into when doing a "search in all" -$fieldstosearchall = array(); -foreach ($object->fields as $key => $val) { - if (!empty($val['searchall'])) { - $fieldstosearchall['t.'.$key] = $val['label']; - } -} - -// Definition of array of fields for columns -$arrayfields = array(); -foreach ($object->fields as $key => $val) { - // If $val['visible']==0, then we never show the field - if (!empty($val['visible'])) { - $visible = (int) dol_eval($val['visible'], 1); - $arrayfields['t.'.$key] = array( - 'label'=>$val['label'], - 'checked'=>(($visible < 0) ? 0 : 1), - 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)), - 'position'=>$val['position'], - 'help'=> isset($val['help']) ? $val['help'] : '' - ); - } -} -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; - -$object->fields = dol_sort_array($object->fields, 'position'); -//$arrayfields['anotherfield'] = array('type'=>'integer', 'label'=>'AnotherField', 'checked'=>1, 'enabled'=>1, 'position'=>90, 'csslist'=>'right'); -$arrayfields = dol_sort_array($arrayfields, 'position'); - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->hasRight('mymodule', 'myobject', 'read'); - $permissiontoadd = $user->hasRight('mymodule', 'myobject', 'write'); - $permissiontodelete = $user->hasRight('mymodule', 'myobject', 'delete'); -} else { - $permissiontoread = 1; - $permissiontoadd = 1; - $permissiontodelete = 1; -} - -// Security check (enable the most restrictive one) -if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) accessforbidden(); -//$socid = 0; if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, 0, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden('Module mymodule not enabled'); -} -if (!$permissiontoread) accessforbidden(); - - -/* - * Actions - */ - -if (GETPOST('cancel', 'alpha')) { - $action = 'list'; - $massaction = ''; -} -if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { - $massaction = ''; -} - -$parameters = array(); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} - -if (empty($reshook)) { - // Selection of new fields - include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; - - // Purge search criteria - if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers - foreach ($object->fields as $key => $val) { - $search[$key] = ''; - if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - $search[$key.'_dtstart'] = ''; - $search[$key.'_dtend'] = ''; - } - } - $toselect = array(); - $search_array_options = array(); - } - if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha') - || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) { - $massaction = ''; // Protection to avoid mass action if we force a new search during a mass action confirmation - } - - // Mass actions - $objectclass = 'MyObject'; - $objectlabel = 'MyObject'; - $uploaddir = $conf->mymodule->dir_output; - include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; - - // You can add more action here - // if ($action == 'xxx' && $permissiontoxxx) ... -} - - - -/* - * View - */ - -$form = new Form($db); - -$now = dol_now(); - -//$help_url = "EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject"; -$help_url = ''; -$title = $langs->trans("MyObjects"); -$morejs = array(); -$morecss = array(); - - -// Build and execute select -// -------------------------------------------------------------------- -$sql = 'SELECT '; -$sql .= $object->getFieldList('t'); -// Add fields from extrafields -if (!empty($extrafields->attributes[$object->table_element]['label'])) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { - $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? ", ef.".$key." as options_".$key : ''); - } -} -// Add fields from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= preg_replace('/^,/', '', $hookmanager->resPrint); -$sql = preg_replace('/,\s*$/', '', $sql); -//$sql .= ", COUNT(rc.rowid) as anotherfield"; - -$sqlfields = $sql; // $sql fields to remove for count total - -$sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; -//$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."anothertable as rc ON rc.parent = t.rowid"; -if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)"; -} -// Add table from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= $hookmanager->resPrint; -if ($object->ismultientitymanaged == 1) { - $sql .= " WHERE t.entity IN (".getEntity($object->element).")"; -} else { - $sql .= " WHERE 1 = 1"; -} -foreach ($search as $key => $val) { - if (array_key_exists($key, $object->fields)) { - if ($key == 'status' && $search[$key] == -1) { - continue; - } - $mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0); - if ((strpos($object->fields[$key]['type'], 'integer:') === 0) || (strpos($object->fields[$key]['type'], 'sellist:') === 0) || !empty($object->fields[$key]['arrayofkeyval'])) { - if ($search[$key] == '-1' || ($search[$key] === '0' && (empty($object->fields[$key]['arrayofkeyval']) || !array_key_exists('0', $object->fields[$key]['arrayofkeyval'])))) { - $search[$key] = ''; - } - $mode_search = 2; - } - if ($search[$key] != '') { - $sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search)); - } - } else { - if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { - $columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key); - if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) { - if (preg_match('/_dtstart$/', $key)) { - $sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; - } - if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t.".$db->escape($columnName)." <= '".$db->idate($search[$key])."'"; - } - } - } - } -} -if ($search_all) { - $sql .= natural_search(array_keys($fieldstosearchall), $search_all); -} -//$sql.= dolSqlDateFilter("t.field", $search_xxxday, $search_xxxmonth, $search_xxxyear); -// Add where from extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; -// Add where from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= $hookmanager->resPrint; - -/* If a group by is required -$sql .= " GROUP BY "; -foreach($object->fields as $key => $val) { - $sql .= "t.".$db->escape($key).", "; -} -// Add fields from extrafields -if (!empty($extrafields->attributes[$object->table_element]['label'])) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { - $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); - } -} -// Add where from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= $hookmanager->resPrint; -$sql = preg_replace('/,\s*$/', '', $sql); -*/ - -// Add HAVING from hooks -/* -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListHaving', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= empty($hookmanager->resPrint) ? "" : " HAVING 1=1 ".$hookmanager->resPrint; -*/ - -// Count total nb of records -$nbtotalofrecords = ''; -if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - /* The fast and low memory method to get and count full list converts the sql into a sql count */ - $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql); - $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount); - $resql = $db->query($sqlforcount); - if ($resql) { - $objforcount = $db->fetch_object($resql); - $nbtotalofrecords = $objforcount->nbtotalofrecords; - } else { - dol_print_error($db); - } - - if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0 - $page = 0; - $offset = 0; - } - $db->free($resql); -} - -// Complete request and execute it with limit -$sql .= $db->order($sortfield, $sortorder); -if ($limit) { - $sql .= $db->plimit($limit + 1, $offset); -} - -$resql = $db->query($sql); -if (!$resql) { - dol_print_error($db); - exit; -} - -$num = $db->num_rows($resql); - - -// Direct jump if only one record found -if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all && !$page) { - $obj = $db->fetch_object($resql); - $id = $obj->rowid; - header("Location: ".dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$id); - exit; -} - - -// Output page -// -------------------------------------------------------------------- - -llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist'); // Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll - -// Example : Adding jquery code -// print ''; - -$arrayofselected = is_array($toselect) ? $toselect : array(); - -$param = ''; -if (!empty($mode)) { - $param .= '&mode='.urlencode($mode); -} -if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { - $param .= '&contextpage='.urlencode($contextpage); -} -if ($limit > 0 && $limit != $conf->liste_limit) { - $param .= '&limit='.urlencode($limit); -} -foreach ($search as $key => $val) { - if (is_array($search[$key])) { - foreach ($search[$key] as $skey) { - if ($skey != '') { - $param .= '&search_'.$key.'[]='.urlencode($skey); - } - } - } elseif (preg_match('/(_dtstart|_dtend)$/', $key) && !empty($val)) { - $param .= '&search_'.$key.'month='.((int) GETPOST('search_'.$key.'month', 'int')); - $param .= '&search_'.$key.'day='.((int) GETPOST('search_'.$key.'day', 'int')); - $param .= '&search_'.$key.'year='.((int) GETPOST('search_'.$key.'year', 'int')); - } elseif ($search[$key] != '') { - $param .= '&search_'.$key.'='.urlencode($search[$key]); - } -} -if ($optioncss != '') { - $param .= '&optioncss='.urlencode($optioncss); -} -// Add $param from extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; -// Add $param from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListSearchParam', $parameters, $object); // Note that $action and $object may have been modified by hook -$param .= $hookmanager->resPrint; - -// List of mass actions available -$arrayofmassactions = array( - //'validate'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("Validate"), - //'generate_doc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("ReGeneratePDF"), - //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), - //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), -); -if (!empty($permissiontodelete)) { - $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); -} -if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) { - $arrayofmassactions = array(); -} -$massactionbutton = $form->selectMassAction('', $arrayofmassactions); - -print '
    '."\n"; -if ($optioncss != '') { - print ''; -} -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; - - -$newcardbutton = ''; -$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition')); -$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition')); -$newcardbutton .= dolGetButtonTitleSeparator(); -$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/mymodule/myobject_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); - -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1); - -// Add code for pre mass action (confirmation or email presend form) -$topicmail = "SendMyObjectRef"; -$modelmail = "myobject"; -$objecttmp = new MyObject($db); -$trackid = 'xxxx'.$object->id; -include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; - -if ($search_all) { - $setupstring = ''; - foreach ($fieldstosearchall as $key => $val) { - $fieldstosearchall[$key] = $langs->trans($val); - $setupstring .= $key."=".$val.";"; - } - print ''."\n"; - print '
    '.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
    '."\n"; -} - -$moreforfilter = ''; -/*$moreforfilter.='
    '; -$moreforfilter.= $langs->trans('MyFilter') . ': '; -$moreforfilter.= '
    ';*/ - -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook -if (empty($reshook)) { - $moreforfilter .= $hookmanager->resPrint; -} else { - $moreforfilter = $hookmanager->resPrint; -} - -if (!empty($moreforfilter)) { - print '
    '; - print $moreforfilter; - print '
    '; -} - -$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields -$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); - -print '
    '; // You can use div-table-responsive-no-min if you dont need reserved height for your table -print ''."\n"; - -// Fields title search -// -------------------------------------------------------------------- -print ''; -// Action column -if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; -} -foreach ($object->fields as $key => $val) { - $searchkey = empty($search[$key]) ? '' : $search[$key]; - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - if (!empty($arrayfields['t.'.$key]['checked'])) { - print ''; - } -} -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; - -// Fields from hook -$parameters = array('arrayfields'=>$arrayfields); -$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; -/*if (!empty($arrayfields['anotherfield']['checked'])) { - print ''; -}*/ -// Action column -if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; -} -print ''."\n"; - -$totalarray = array(); -$totalarray['nbfield'] = 0; - -// Fields title label -// -------------------------------------------------------------------- -print ''; -if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; - $totalarray['nbfield']++; -} -foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - $cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label - if (!empty($arrayfields['t.'.$key]['checked'])) { - print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''))."\n"; - $totalarray['nbfield']++; - } -} -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; -// Hook fields -$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder, 'totalarray'=>&$totalarray); -$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; -/*if (!empty($arrayfields['anotherfield']['checked'])) { - print ''; - $totalarray['nbfield']++; -}*/ -// Action column -if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; - $totalarray['nbfield']++; -} -print ''."\n"; - -$totalarray = array(); -$totalarray['nbfield'] = 0; - -// Detect if we need a fetch on each output line -$needToFetchEachLine = 0; -if (isset($extrafields->attributes[$object->table_element]['computed']) && is_array($extrafields->attributes[$object->table_element]['computed']) && count($extrafields->attributes[$object->table_element]['computed']) > 0) { - foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) { - if (preg_match('/\$object/', $val)) { - $needToFetchEachLine++; // There is at least one compute field that use $object - } - } -} - - -// Loop on record -// -------------------------------------------------------------------- -$i = 0; -$savnbfield = $totalarray['nbfield']; -$totalarray = array(); -$totalarray['nbfield'] = 0; -$imaxinloop = ($limit ? min($num, $limit) : $num); -while ($i < $imaxinloop) { - $obj = $db->fetch_object($resql); - if (empty($obj)) { - break; // Should not happen - } - - // Store properties in $object - $object->setVarsFromFetchObj($obj); - - if ($mode == 'kanban') { - if ($i == 0) { - print ''; - } - } else { - // Show here line of result - $j = 0; - print ''; - // Action column - if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - } - foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } - - if (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif ($key == 'ref') { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } - - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - - if (!empty($arrayfields['t.'.$key]['checked'])) { - print ''; - if ($key == 'status') { - print $object->getLibStatut(5); - } elseif ($key == 'rowid') { - print $object->showOutputField($val, $key, $object->id, ''); - } else { - print $object->showOutputField($val, $key, $object->$key, ''); - } - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - if (!empty($val['isameasure']) && $val['isameasure'] == 1) { - if (!$i) { - $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; - } - if (!isset($totalarray['val'])) { - $totalarray['val'] = array(); - } - if (!isset($totalarray['val']['t.'.$key])) { - $totalarray['val']['t.'.$key] = 0; - } - $totalarray['val']['t.'.$key] += $object->$key; - } - } - } - // Extra fields - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; - // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); - $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - /*if (!empty($arrayfields['anotherfield']['checked'])) { - print ''; - }*/ - // Action column - if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - } - - print ''."\n"; - } - - $i++; -} - -// Show total line -include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; - -// If no record found -if ($num == 0) { - $colspan = 1; - foreach ($arrayfields as $key => $val) { - if (!empty($val['checked'])) { - $colspan++; - } - } - print ''; -} - - -$db->free($resql); - -$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; - -print '
    '; - $searchpicto = $form->showFilterButtons('left'); - print $searchpicto; - print ''; - if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) { - print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status onrightofpage' : ''), 1); - } elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) { - print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', $cssforfield.' maxwidth250', 1); - } elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - print '
    '; - print $form->selectDate($search[$key.'_dtstart'] ? $search[$key.'_dtstart'] : '', "search_".$key."_dtstart", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); - print '
    '; - print '
    '; - print $form->selectDate($search[$key.'_dtend'] ? $search[$key.'_dtend'] : '', "search_".$key."_dtend", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); - print '
    '; - } elseif ($key == 'lang') { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; - $formadmin = new FormAdmin($db); - print $formadmin->select_language($search[$key], 'search_lang', 0, null, 1, 0, 0, 'minwidth150 maxwidth200', 2); - } else { - print ''; - } - print '
    '; - $searchpicto = $form->showFilterButtons(); - print $searchpicto; - print '
    '.$langs->trans("AnotherField").'
    '; - print '
    '; - } - // Output Kanban - print $object->getKanbanView(''); - if ($i == ($imaxinloop - 1)) { - print '
    '; - print '
    '; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; - } - print ''; - } - print ''.$obj->anotherfield.''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; - } - print ''; - } - print '
    '.$langs->trans("NoRecordFound").'
    '."\n"; -print '
    '."\n"; - -print '
    '."\n"; - -if (in_array('builddoc', $arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords)) { - $hidegeneratedfilelistifempty = 1; - if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) { - $hidegeneratedfilelistifempty = 0; - } - - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; - $formfile = new FormFile($db); - - // Show list of available documents - $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; - $urlsource .= str_replace('&', '&', $param); - - $filedir = $diroutputmassaction; - $genallowed = $permissiontoread; - $delallowed = $permissiontoadd; - - print $formfile->showdocuments('massfilesarea_mymodule', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/myobject_note.php b/htdocs/modulebuilder/template/myobject_note.php deleted file mode 100644 index 1f3bf7c9..00000000 --- a/htdocs/modulebuilder/template/myobject_note.php +++ /dev/null @@ -1,221 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/myobject_note.php - * \ingroup mymodule - * \brief Tab for notes on MyObject - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification - -// Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../main.inc.php")) { - $res = @include "../main.inc.php"; -} -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - -dol_include_once('/mymodule/class/myobject.class.php'); -dol_include_once('/mymodule/lib/mymodule_myobject.lib.php'); - -// Load translation files required by the page -$langs->loadLangs(array("mymodule@mymodule", "companies")); - -// Get parameters -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); -$action = GETPOST('action', 'aZ09'); -$cancel = GETPOST('cancel', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - -// Initialize technical objects -$object = new MyObject($db); -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->mymodule->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('myobjectnote', 'globalcard')); // Note that conf->hooks_modules contains array -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); - -// Load object -include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals -if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->mymodule->multidir_output[empty($object->entity) ? $conf->entity : $object->entity]."/".$object->id; -} - - -// There is several ways to check permission. -// Set $enablepermissioncheck to 1 to enable a minimum low level of checks -$enablepermissioncheck = 0; -if ($enablepermissioncheck) { - $permissiontoread = $user->rights->mymodule->myobject->read; - $permissiontoadd = $user->rights->mymodule->myobject->write; - $permissionnote = $user->rights->mymodule->myobject->write; // Used by the include of actions_setnotes.inc.php -} else { - $permissiontoread = 1; - $permissiontoadd = 1; - $permissionnote = 1; -} - -// Security check (enable the most restrictive one) -//if ($user->socid > 0) accessforbidden(); -//if ($user->socid > 0) $socid = $user->socid; -//$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); -if (!isModEnabled("mymodule")) { - accessforbidden(); -} -if (!$permissiontoread) accessforbidden(); - - -/* - * Actions - */ - -$parameters = array(); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} -if (empty($reshook)) { - include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not include_once -} - - -/* - * View - */ - -$form = new Form($db); - -//$help_url='EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes'; -$help_url = ''; -$title = $langs->trans('MyObject').' - '.$langs->trans("Notes"); -llxHeader('', $title, $help_url); - -if ($id > 0 || !empty($ref)) { - $object->fetch_thirdparty(); - - $head = myobjectPrepareHead($object); - - print dol_get_fiche_head($head, 'note', $langs->trans("MyObject"), -1, $object->picto); - - // Object card - // ------------------------------------------------------------ - $linkback = ''.$langs->trans("BackToList").''; - - $morehtmlref = '
    '; - /* - // Ref customer - $morehtmlref.=$form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); - $morehtmlref.=$form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); - // Thirdparty - $morehtmlref.='
    '.$langs->trans('ThirdParty') . ' : ' . (is_object($object->thirdparty) ? $object->thirdparty->getNomUrl(1) : ''); - // Project - if (!empty($conf->project->enabled)) - { - $langs->load("projects"); - $morehtmlref.='
    '.$langs->trans('Project') . ' '; - if ($permissiontoadd) - { - if ($action != 'classify') - //$morehtmlref.='' . img_edit($langs->transnoentitiesnoconv('SetProject')) . ' : '; - $morehtmlref.=' : '; - if ($action == 'classify') { - //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); - $morehtmlref.='
    '; - $morehtmlref.=''; - $morehtmlref.=''; - $morehtmlref.=$formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); - $morehtmlref.=''; - $morehtmlref.='
    '; - } else { - $morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); - } - } else { - if (!empty($object->fk_project)) { - $proj = new Project($db); - $proj->fetch($object->fk_project); - $morehtmlref .= ': '.$proj->getNomUrl(); - } else { - $morehtmlref .= ''; - } - } - }*/ - $morehtmlref .= '
    '; - - - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); - - - print '
    '; - print '
    '; - - - $cssclass = "titlefield"; - include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; - - print '
    '; - - print dol_get_fiche_end(); -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/modulebuilder/template/scripts/mymodule.php b/htdocs/modulebuilder/template/scripts/mymodule.php deleted file mode 100644 index e335eb0e..00000000 --- a/htdocs/modulebuilder/template/scripts/mymodule.php +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env php - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/modulebuilder/template/scripts/mymodule.php - * \ingroup mymodule - * \brief This file is an example for a command line script for module MyModule - */ - -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET -//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification -if (!defined('NOSESSION')) define('NOSESSION', '1'); // On CLI mode, no need to use web sessions - - -$sapi_type = php_sapi_name(); -$script_file = basename(__FILE__); -$path = __DIR__.'/'; - -// Test if batch mode -if (substr($sapi_type, 0, 3) == 'cgi') { - echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n"; - exit(-1); -} - -// Global variables -$version = '1.0'; -$error = 0; - - -// -------------------- START OF YOUR CODE HERE -------------------- -@set_time_limit(0); // No timeout for this script -define('EVEN_IF_ONLY_LOGIN_ALLOWED', 1); // Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only". - -// Load Dolibarr environment -$res = 0; -// Try master.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/master.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/master.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/master.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/master.inc.php"; -} -// Try master.inc.php using relative path -if (!$res && file_exists("../master.inc.php")) { - $res = @include "../master.inc.php"; -} -if (!$res && file_exists("../../master.inc.php")) { - $res = @include "../../master.inc.php"; -} -if (!$res && file_exists("../../../master.inc.php")) { - $res = @include "../../../master.inc.php"; -} -if (!$res) { - print "Include of master fails"; - exit(-1); -} -// After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file). -// $user is created but empty. - -//$langs->setDefaultLang('en_US'); // To change default language of $langs -$langs->load("main"); // To load language file for default language - -// Load user and its permissions -$result = $user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user. -if (!($result > 0)) { - dol_print_error('', $user->error); exit; -} -$user->getrights(); - - -print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n"; -if (!isset($argv[1])) { // Check parameters - print "Usage: ".$script_file." param1 param2 ...\n"; - exit(-1); -} -print '--- start'."\n"; -print 'Argument 1='.$argv[1]."\n"; -print 'Argument 2='.$argv[2]."\n"; - - -// Start of transaction -$db->begin(); - - -// Examples for manipulating class MyObject -//dol_include_once("/mymodule/class/myobject.class.php"); -//$myobject=new MyObject($db); - -// Example for inserting creating object in database -/* -dol_syslog($script_file." CREATE", LOG_DEBUG); -$myobject->prop1='value_prop1'; -$myobject->prop2='value_prop2'; -$id=$myobject->create($user); -if ($id < 0) { $error++; dol_print_error($db,$myobject->error); } -else print "Object created with id=".$id."\n"; -*/ - -// Example for reading object from database -/* -dol_syslog($script_file." FETCH", LOG_DEBUG); -$result=$myobject->fetch($id); -if ($result < 0) { $error; dol_print_error($db,$myobject->error); } -else print "Object with id=".$id." loaded\n"; -*/ - -// Example for updating object in database ($myobject must have been loaded by a fetch before) -/* -dol_syslog($script_file." UPDATE", LOG_DEBUG); -$myobject->prop1='newvalue_prop1'; -$myobject->prop2='newvalue_prop2'; -$result=$myobject->update($user); -if ($result < 0) { $error++; dol_print_error($db,$myobject->error); } -else print "Object with id ".$myobject->id." updated\n"; -*/ - -// Example for deleting object in database ($myobject must have been loaded by a fetch before) -/* -dol_syslog($script_file." DELETE", LOG_DEBUG); -$result=$myobject->delete($user); -if ($result < 0) { $error++; dol_print_error($db,$myobject->error); } -else print "Object with id ".$myobject->id." deleted\n"; -*/ - - -// An example of a direct SQL read without using the fetch method -/* -$sql = "SELECT field1, field2"; -$sql.= " FROM ".MAIN_DB_PREFIX."myobject"; -$sql.= " WHERE field3 = 'xxx'"; -$sql.= " ORDER BY field1 ASC"; - -dol_syslog($script_file, LOG_DEBUG); -$resql=$db->query($sql); -if ($resql) -{ - $num = $db->num_rows($resql); - $i = 0; - if ($num) - { - while ($i < $num) - { - $obj = $db->fetch_object($resql); - if ($obj) - { - // You can use here results - print $obj->field1; - print $obj->field2; - } - $i++; - } - } -} -else -{ - $error++; - dol_print_error($db); -} -*/ - - -// -------------------- END OF YOUR CODE -------------------- - -if (!$error) { - $db->commit(); - print '--- end ok'."\n"; -} else { - print '--- end error code='.$error."\n"; - $db->rollback(); -} - -$db->close(); // Close $db database opened handler - -exit($error); diff --git a/htdocs/modulebuilder/template/sql/data.sql b/htdocs/modulebuilder/template/sql/data.sql deleted file mode 100644 index 37860e8b..00000000 --- a/htdocs/modulebuilder/template/sql/data.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Copyright (C) ---Put here your own copyright and developer email--- --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see . - - --- delete from llx_mymodule_myobject; ---INSERT INTO llx_mymodule_myobject VALUES (1, 1, 'mydata'); - - --- delete from llx_c_mydictionarytabme; ---INSERT INTO llx_c_mydictionarytabme (code,label,active) VALUES ('ABC', 'Label ABC', 1); ---INSERT INTO llx_c_mydictionarytabme (code,label,active) VALUES ('DEF', 'Label DEF', 1); - - --- new types of automatic events to record in agenda --- 'code' must be a value matching 'MYOBJECT_ACTION' --- 'elementtype' must be value 'mymodule' ('myobject@mymodule' may be possible but should not be required) ---insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MYOBJECT_VALIDATE','MyObject validated','Executed when myobject is validated', 'mymodule', 1000); ---insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MYOBJECT_UNVALIDATE','MyObject unvalidated','Executed when myobject is unvalidated', 'mymodule', 1001); ---insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MYOBJECT_DELETE','MyObject deleted','Executed when myobject deleted', 'mymodule', 1004); - diff --git a/htdocs/modulebuilder/template/sql/dolibarr_allversions.sql b/htdocs/modulebuilder/template/sql/dolibarr_allversions.sql deleted file mode 100644 index 5026bb4f..00000000 --- a/htdocs/modulebuilder/template/sql/dolibarr_allversions.sql +++ /dev/null @@ -1,3 +0,0 @@ --- --- Script run when an upgrade of Dolibarr is done. Whatever is the Dolibarr version. --- diff --git a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.key.sql b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.key.sql deleted file mode 100644 index fc6b7b0d..00000000 --- a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.key.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Copyright (C) ---Put here your own copyright and developer email--- --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see https://www.gnu.org/licenses/. - - --- BEGIN MODULEBUILDER INDEXES -ALTER TABLE llx_mymodule_myobject ADD INDEX idx_mymodule_myobject_fieldobject (fieldobject); --- END MODULEBUILDER INDEXES - ---ALTER TABLE llx_mymodule_myobject ADD UNIQUE INDEX uk_mymodule_myobject_fieldxy(fieldx, fieldy); - ---ALTER TABLE llx_mymodule_myobject ADD CONSTRAINT llx_mymodule_myobject_fk_field FOREIGN KEY (fk_field) REFERENCES llx_mymodule_myotherobject(rowid); - diff --git a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql deleted file mode 100644 index cc9cca0c..00000000 --- a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright (C) ---Put here your own copyright and developer email--- --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see https://www.gnu.org/licenses/. - - -CREATE TABLE llx_mymodule_myobject( - -- BEGIN MODULEBUILDER FIELDS - rowid INTEGER AUTO_INCREMENT PRIMARY KEY, - entity INTEGER DEFAULT 1 NOT NULL, - label VARCHAR(255), - qty INTEGER, - date_creation DATETIME NOT NULL, - tms TIMESTAMP, - fk_user_create INTEGER, - fk_user_modif INTEGER, - status INTEGER, - import_key VARCHAR(14) - -- END MODULEBUILDER FIELDS -) ENGINE=innodb; diff --git a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.key.sql b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.key.sql deleted file mode 100644 index 4c005e9d..00000000 --- a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.key.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Copyright (C) ---Put here your own copyright and developer email--- --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see https://www.gnu.org/licenses/. - - --- BEGIN MODULEBUILDER INDEXES -ALTER TABLE llx_mymodule_myobject_extrafields ADD INDEX idx_myobject_fk_object(fk_object); --- END MODULEBUILDER INDEXES diff --git a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.sql b/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.sql deleted file mode 100644 index e0fc9ff4..00000000 --- a/htdocs/modulebuilder/template/sql/llx_mymodule_myobject_extrafields.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Copyright (C) ---Put here your own copyright and developer email--- --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see https://www.gnu.org/licenses/. - -create table llx_mymodule_myobject_extrafields -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - tms timestamp, - fk_object integer NOT NULL, - import_key varchar(14) -- import key -) ENGINE=innodb; - diff --git a/htdocs/modulebuilder/template/sql/update_x.x.x-y.y.y.sql b/htdocs/modulebuilder/template/sql/update_x.x.x-y.y.y.sql deleted file mode 100644 index 2988bd71..00000000 --- a/htdocs/modulebuilder/template/sql/update_x.x.x-y.y.y.sql +++ /dev/null @@ -1,4 +0,0 @@ --- --- Script run to make a migration of module version x.x.x to module version y.y.y --- - \ No newline at end of file diff --git a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php b/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php deleted file mode 100644 index 9701e27d..00000000 --- a/htdocs/modulebuilder/template/test/phpunit/MyModuleFunctionalTest.php +++ /dev/null @@ -1,304 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file test/phpunit/MyModuleFunctionalTest.php - * \ingroup mymodule - * \brief Example Selenium test. - * - * Put detailed description here. - */ - -namespace test\functional; - -use PHPUnit_Extensions_Selenium2TestCase_WebDriverException; - -/** - * Class MyModuleFunctionalTest - * - * Requires chromedriver for Google Chrome - * Requires geckodriver for Mozilla Firefox - * - * @fixme Firefox (Geckodriver/Marionette) support - * @todo Opera linux support - * @todo Windows support (IE, Google Chrome, Mozilla Firefox, Safari) - * @todo OSX support (Safari, Google Chrome, Mozilla Firefox) - * - * @package Testmymodule - */ -class MyModuleFunctionalTest extends \PHPUnit_Extensions_Selenium2TestCase -{ - // TODO: move to a global configuration file? - /** @var string Base URL of the webserver under test */ - protected static $base_url = 'http://dev.zenfusion.fr'; - /** - * @var string Dolibarr admin username - * @see authenticate - */ - protected static $dol_admin_user = 'admin'; - /** - * @var string Dolibarr admin password - * @see authenticate - */ - protected static $dol_admin_pass = 'admin'; - /** @var int Dolibarr module ID */ - private static $module_id = 500000; // TODO: autodetect? - - /** @var array Browsers to test with */ - public static $browsers = array( - array( - 'browser' => 'Google Chrome on Linux', - 'browserName' => 'chrome', - 'sessionStrategy' => 'shared', - 'desiredCapabilities' => array() - ), - // Geckodriver does not keep the session at the moment?! - // XPath selectors also don't seem to work - //array( - // 'browser' => 'Mozilla Firefox on Linux', - // 'browserName' => 'firefox', - // 'sessionStrategy' => 'shared', - // 'desiredCapabilities' => array( - // 'marionette' => true, - // ), - //) - ); - - /** - * Helper function to select links by href - * - * @param string $value Href - * @return mixed Helper string - */ - protected function byHref($value) - { - $anchor = null; - $anchors = $this->elements($this->using('tag name')->value('a')); - foreach ($anchors as $anchor) { - if (strstr($anchor->attribute('href'), $value)) { - break; - } - } - return $anchor; - } - - /** - * Global test setup - * @return void - */ - public static function setUpBeforeClass() - { - } - - /** - * Unit test setup - * @return void - */ - public function setUp() - { - $this->setSeleniumServerRequestsTimeout(3600); - $this->setBrowserUrl(self::$base_url); - } - - /** - * Verify pre conditions - * @return void - */ - protected function assertPreConditions() - { - } - - /** - * Handle Dolibarr authentication - * @return void - */ - private function authenticate() - { - try { - if ($this->byId('login')) { - $login = $this->byId('username'); - $login->clear(); - $login->value('admin'); - $password = $this->byId('password'); - $password->clear(); - $password->value('admin'); - $this->byId('login')->submit(); - } - } catch (PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) { - // Login does not exist. Assume we are already authenticated - } - } - - /** - * Test enabling developer mode - * @return bool - */ - public function testEnableDeveloperMode() - { - $this->url('/admin/const.php'); - $this->authenticate(); - $main_features_level_path = '//input[@value="MAIN_FEATURES_LEVEL"]/following::input[@type="text"]'; - $main_features_level = $this->byXPath($main_features_level_path); - $main_features_level->clear(); - $main_features_level->value('2'); - $this->byName('update')->click(); - // Page reloaded, we need a new XPath - $main_features_level = $this->byXPath($main_features_level_path); - return $this->assertEquals('2', $main_features_level->value(), "MAIN_FEATURES_LEVEL value is 2"); - } - - /** - * Test enabling the module - * - * @depends testEnableDeveloperMode - * @return bool - */ - public function testModuleEnabled() - { - $this->url('/admin/modules.php'); - $this->authenticate(); - $module_status_image_path = '//a[contains(@href, "'.self::$module_id.'")]/img'; - $module_status_image = $this->byXPath($module_status_image_path); - if (strstr($module_status_image->attribute('src'), 'switch_off.png')) { - // Enable the module - $this->byHref('modMyModule')->click(); - } else { - // Disable the module - $this->byHref('modMyModule')->click(); - // Reenable the module - $this->byHref('modMyModule')->click(); - } - // Page reloaded, we need a new Xpath - $module_status_image = $this->byXPath($module_status_image_path); - return $this->assertContains('switch_on.png', $module_status_image->attribute('src'), "Module enabled"); - } - - /** - * Test access to the configuration page - * - * @depends testModuleEnabled - * @return bool - */ - public function testConfigurationPage() - { - $this->url('/custom/mymodule/admin/setup.php'); - $this->authenticate(); - return $this->assertContains('mymodule/admin/setup.php', $this->url(), 'Configuration page'); - } - - /** - * Test access to the about page - * - * @depends testConfigurationPage - * @return bool - */ - public function testAboutPage() - { - $this->url('/custom/mymodule/admin/about.php'); - $this->authenticate(); - return $this->assertContains('mymodule/admin/about.php', $this->url(), 'About page'); - } - - /** - * Test about page is rendering Markdown - * - * @depends testAboutPage - * @return bool - */ - public function testAboutPageRendersMarkdownReadme() - { - $this->url('/custom/mymodule/admin/about.php'); - $this->authenticate(); - return $this->assertEquals( - 'Dolibarr Module Template (aka My Module)', - $this->byTag('h1')->text(), - "Readme title" - ); - } - - /** - * Test box is properly declared - * - * @depends testModuleEnabled - * @return bool - */ - public function testBoxDeclared() - { - $this->url('/admin/boxes.php'); - $this->authenticate(); - return $this->assertContains('mymodulewidget1', $this->source(), "Box enabled"); - } - - /** - * Test trigger is properly enabled - * - * @depends testModuleEnabled - * @return bool - */ - public function testTriggerDeclared() - { - $this->url('/admin/triggers.php'); - $this->authenticate(); - return $this->assertContains( - 'interface_99_modMyModule_MyModuleTriggers.class.php', - $this->byTag('body')->text(), - "Trigger declared" - ); - } - - /** - * Test trigger is properly declared - * - * @depends testTriggerDeclared - * @return bool - */ - public function testTriggerEnabled() - { - $this->url('/admin/triggers.php'); - $this->authenticate(); - return $this->assertContains( - 'tick.png', - $this->byXPath('//td[text()="interface_99_modMyModule_MyTrigger.class.php"]/following::img')->attribute('src'), - "Trigger enabled" - ); - } - - /** - * Verify post conditions - * @return void - */ - protected function assertPostConditions() - { - } - - /** - * Unit test teardown - * @return void - */ - public function tearDown() - { - } - - /** - * Global test teardown - * @return void - */ - public static function tearDownAfterClass() - { - } -} diff --git a/htdocs/modulebuilder/template/test/phpunit/MyObjectTest.php b/htdocs/modulebuilder/template/test/phpunit/MyObjectTest.php deleted file mode 100644 index 31084cf7..00000000 --- a/htdocs/modulebuilder/template/test/phpunit/MyObjectTest.php +++ /dev/null @@ -1,200 +0,0 @@ - - * Copyright (C) ---Put here your own copyright and developer email--- - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file test/phpunit/MyObjectTest.php - * \ingroup mymodule - * \brief PHPUnit test for MyObject class. - */ - -global $conf, $user, $langs, $db; -//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver - -//require_once 'PHPUnit/Autoload.php'; -require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; -require_once dirname(__FILE__).'/../../htdocs/mymodule/class/myobject.class.php'; - -if (empty($user->id)) { - print "Load permissions for admin user nb 1\n"; - $user->fetch(1); - $user->getrights(); -} -$conf->global->MAIN_DISABLE_ALL_MAILS = 1; - -$langs->load("main"); - - -/** - * Class MyObjectTest - * - * @backupGlobals disabled - * @backupStaticAttributes enabled - * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. - */ -class MyObjectTest extends PHPUnit\Framework\TestCase -{ - protected $savconf; - protected $savuser; - protected $savlangs; - protected $savdb; - - /** - * Constructor - * We save global variables into local variables - * - * @return MyObjectTest - */ - public function __construct() - { - parent::__construct(); - - //$this->sharedFixture - global $conf, $user, $langs, $db; - $this->savconf = $conf; - $this->savuser = $user; - $this->savlangs = $langs; - $this->savdb = $db; - - print __METHOD__." db->type=".$db->type." user->id=".$user->id; - //print " - db ".$db->db; - print "\n"; - } - - /** - * Global test setup - * - * @return void - */ - public static function setUpBeforeClass() - { - global $conf, $user, $langs, $db; - $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. - - print __METHOD__."\n"; - } - - /** - * Unit test setup - * - * @return void - */ - protected function setUp() - { - global $conf, $user, $langs, $db; - $conf = $this->savconf; - $user = $this->savuser; - $langs = $this->savlangs; - $db = $this->savdb; - - print __METHOD__."\n"; - } - - /** - * Unit test teardown - * - * @return void - */ - protected function tearDown() - { - print __METHOD__."\n"; - } - - /** - * Global test teardown - * - * @return void - */ - public static function tearDownAfterClass() - { - global $conf, $user, $langs, $db; - $db->rollback(); - - print __METHOD__."\n"; - } - - - /** - * A sample test - * - * @return bool - */ - public function testSomething() - { - global $conf, $user, $langs, $db; - $conf = $this->savconf; - $user = $this->savuser; - $langs = $this->savlangs; - $db = $this->savdb; - - $result = true; - - print __METHOD__." result=".$result."\n"; - $this->assertTrue($result); - - return $result; - } - - /** - * testMyObjectCreate - * - * @return int - */ - public function testMyObjectCreate() - { - global $conf, $user, $langs, $db; - $conf = $this->savconf; - $user = $this->savuser; - $langs = $this->savlangs; - $db = $this->savdb; - - $localobject = new MyObject($this->savdb); - $localobject->initAsSpecimen(); - $result = $localobject->create($user); - - print __METHOD__." result=".$result."\n"; - $this->assertLessThan($result, 0); - - return $result; - } - - /** - * testMyObjectDelete - * - * @param int $id Id of object - * @return int - * - * @depends testMyObjectCreate - * The depends says test is run only if previous is ok - */ - public function testMyObjectDelete($id) - { - global $conf, $user, $langs, $db; - $conf = $this->savconf; - $user = $this->savuser; - $langs = $this->savlangs; - $db = $this->savdb; - - $localobject = new MyObject($this->savdb); - $result = $localobject->fetch($id); - $result = $localobject->delete($user); - - print __METHOD__." id=".$id." result=".$result."\n"; - $this->assertLessThan($result, 0); - return $result; - } -} diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php deleted file mode 100644 index 36c5b2ea..00000000 --- a/htdocs/opensurvey/card.php +++ /dev/null @@ -1,438 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * Copyright (C) 2018-2020 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/card.php - * \ingroup opensurvey - * \brief Page to edit survey - */ - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/class/doleditor.class.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php"; - - -// Security check -if (empty($user->rights->opensurvey->read)) { - accessforbidden(); -} - -// Initialize Variables -$action = GETPOST('action', 'aZ09'); -$cancel = GETPOST('cancel', 'alpha'); - -$numsondage = ''; - -if (GETPOST('id')) { - $numsondage = (string) GETPOST('id', 'alpha'); -} - -// Initialize objects -$object = new Opensurveysondage($db); - -$result = $object->fetch(0, $numsondage); -if ($result <= 0) { - dol_print_error($db, $object->error); - exit; -} - -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$hookmanager->initHooks(array('surveycard', 'globalcard')); - -$expiredate = dol_mktime(0, 0, 0, GETPOST('expiremonth'), GETPOST('expireday'), GETPOST('expireyear')); - -$permissiontoread = $user->rights->opensurvey->read; -$permissiontoadd = $user->rights->opensurvey->write; -// permission delete doesn't exists -$permissiontodelete = $user->rights->opensurvey->write; - - -/* - * Actions - */ - -$parameters = array('id' => $numsondage); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} - -if (empty($reshook)) { - if ($cancel) { - $action = ''; - } - - // Delete - if ($action == 'delete_confirm') { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $result = $object->delete($user, '', $numsondage); - - header('Location: '.dol_buildpath('/opensurvey/list.php', 1)); - exit(); - } - - // Close - if ($action == 'close') { - $object->status = Opensurveysondage::STATUS_CLOSED; - $object->update($user); - } - - // Reopend - if ($action == 'reopen') { - $object->status = Opensurveysondage::STATUS_VALIDATED; - $object->update($user); - } - - // Update - if ($action == 'update') { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $error = 0; - - if (!GETPOST('nouveautitre')) { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Title")), null, 'errors'); - $error++; - $action = 'edit'; - } - - if (!$error) { - $object->title = (string) GETPOST('nouveautitre', 'alphanohtml'); - $object->description = (string) GETPOST('nouveauxcommentaires', 'restricthtml'); - $object->mail_admin = (string) GETPOST('nouvelleadresse', 'alpha'); - $object->date_fin = $expiredate; - $object->allow_comments = GETPOST('cancomment', 'aZ09') == 'on' ? 1 : 0; - $object->allow_spy = GETPOST('canseeothersvote', 'aZ09') == 'on' ? 1 : 0; - $object->mailsonde = GETPOST('mailsonde', 'aZ09') == 'on' ? 1 : 0; - - $res = $object->update($user); - if ($res < 0) { - setEventMessages($object->error, $object->errors, 'errors'); - $action = 'edit'; - } - } - } - - // Add comment - if (GETPOST('ajoutcomment')) { - $error = 0; - - if (!GETPOST('comment', "alphanohtml")) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Comment")), null, 'errors'); - } - if (!GETPOST('commentuser', "alphanohtml")) { - $error++; - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("User")), null, 'errors'); - } - - if (!$error) { - $comment = (string) GETPOST("comment", "alphanohtml"); - $comment_user = (string) GETPOST('commentuser', "alphanohtml"); - - $resql = $object->addComment($comment, $comment_user); - - if (!$resql) { - setEventMessages($langs->trans('ErrorInsertingComment'), null, 'errors'); - } - } - } - - // Delete comment - if ($action == 'deletecomment') { - $idcomment = GETPOST('idcomment', 'int'); - if ($idcomment > 0) { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $resql = $object->deleteComment($idcomment); - } - } - - if ($action == 'edit') { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - } -} - - -/* - * View - */ - -$form = new Form($db); - -if ($object->fk_user_creat) { - $userstatic = new User($db); - $userstatic->fetch($object->fk_user_creat); -} - -$title = $object->title." - ".$langs->trans('Card'); -$helpurl = ''; -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $title, $helpurl, 0, 0, 0, $arrayofjs, $arrayofcss); - - -// Define format of choices -$toutsujet = explode(",", $object->sujet); -$listofanswers = array(); -foreach ($toutsujet as $value) { - $tmp = explode('@', $value); - $listofanswers[] = array('label'=>$tmp[0], 'format'=>(!empty($tmp[1]) ? $tmp[1] : 'checkbox')); -} -$toutsujet = str_replace("@", "
    ", $toutsujet); -$toutsujet = str_replace("°", "'", $toutsujet); - -print '
    '."\n"; -print ''; -print ''; - -$head = opensurvey_prepare_head($object); - - -print dol_get_fiche_head($head, 'general', $langs->trans("Survey"), -1, 'poll'); - -$morehtmlref = ''; - -$linkback = ''.$langs->trans("BackToList").''; - -dol_banner_tab($object, 'id', $linkback, 1, 'id_sondage', 'id_sondage', $morehtmlref); - - -print '
    '; - -print '
    '; -print '
    '; -print ''; - -// Type -$type = ($object->format == "A") ? 'classic' : 'date'; -print ''; - -// Title -print ''; - -// Description -print ''; - -// Receive an email with each vote -print ''; - -// Users can comment -print ''; - -// Users can see others vote -print ''; - -print '
    '.$langs->trans("Type").''; -print img_picto('', dol_buildpath('/opensurvey/img/'.($type == 'classic' ? 'chart-32.png' : 'calendar-32.png'), 1), 'width="16"', 1); -print ' '.$langs->trans($type == 'classic' ? "TypeClassic" : "TypeDate").'
    '; -$adresseadmin = $object->mail_admin; -print $langs->trans("Title").''; -if ($action == 'edit') { - print ''; -} else { - print dol_htmlentities($object->title); -} -print '
    '.$langs->trans("Description").''; -if ($action == 'edit') { - $doleditor = new DolEditor('nouveauxcommentaires', $object->description, '', 120, 'dolibarr_notes', 'In', 1, 1, 1, ROWS_7, '90%'); - $doleditor->Create(0, ''); -} else { - print (dol_textishtml($object->description) ? $object->description : dol_nl2br($object->description, 1, true)); -} -print '
    '.$langs->trans('ToReceiveEMailForEachVote').''; -if ($action == 'edit') { - print 'mailsonde ? 'checked="checked"' : '').'">'; -} else { - print yn($object->mailsonde); - - //If option is active and linked user does not have an email, we show a warning - if ($object->fk_user_creat && $object->mailsonde) { - if (!$userstatic->email) { - print ' '.img_warning($langs->trans('NoEMail')); - } - } -} -print '
    '.$langs->trans('CanComment').''; -if ($action == 'edit') { - print 'allow_comments ? 'checked="checked"' : '').'">'; -} else { - print yn($object->allow_comments); -} -print '
    '.$langs->trans('CanSeeOthersVote').''; -if ($action == 'edit') { - print 'allow_spy ? 'checked="checked"' : '').'">'; -} else { - print yn($object->allow_spy); -} -print '
    '; - -print '
    '; -print '
    '; -print '
    '; - -print ''; - -// Expire date -print ''; - -// Author -print ''; - -// Link -print ''; - -// Other attributes -$parameters = array(); -$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; - -print '
    '.$langs->trans('ExpireDate').''; -if ($action == 'edit') { - print $form->selectDate($expiredate ? $expiredate : $object->date_fin, 'expire', 0, 0, 0, '', 1, 0); -} else { - print dol_print_date($object->date_fin, 'day'); - if ($object->date_fin && $object->date_fin < dol_now() && $object->status == Opensurveysondage::STATUS_VALIDATED) { - print img_warning($langs->trans("Expired")); - } -} -print '
    '; -print $langs->trans("Author").''; -if ($object->fk_user_creat > 0) { - print $userstatic->getLoginUrl(1); -} else { - if ($action == 'edit') { - print ''; - } else { - print dol_print_email($object->mail_admin, 0, 0, 1, 0, 1, 1); - } -} -print '
    '.$langs->trans("UrlForSurvey", '').''; - -// Define $urlwithroot -$urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); -$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file -//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current - -$url = $urlwithroot.'/public/opensurvey/studs.php?sondage='.$object->id_sondage; -print ''; -if ($action != 'edit') { - print ajax_autoselect("opensurveyurl", $url, 'image'); -} - -print '
    '; -print '
    '; - -print '
    '; -print '
    '; - -print dol_get_fiche_end(); - -if ($action == 'edit') { - print $form->buttonsSaveCancel(); -} - -print '
    '."\n"; - - - -// Action bar - -print '
    '; - -if ($action != 'edit' && $user->rights->opensurvey->write) { - // Modify button - print ''.$langs->trans("Modify").''; - - if ($object->status == Opensurveysondage::STATUS_VALIDATED) { - // Close button - print ''.$langs->trans("Close").''; - } - if ($object->status == Opensurveysondage::STATUS_CLOSED) { - // Re-Open - print ''.$langs->trans("ReOpen").''; - } - - // Delete - print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?suppressionsondage=1&id='.urlencode($numsondage).'&action=delete&token='.newToken(), 'delete', $permissiontodelete); -} - -print '
    '; - -if ($action == 'delete') { - print $form->formconfirm($_SERVER["PHP_SELF"].'?&id='.urlencode($numsondage), $langs->trans("RemovePoll"), $langs->trans("ConfirmRemovalOfPoll", $id), 'delete_confirm', '', '', 1); -} - - - - -print '
    '."\n"; -print ''; -print ''; -print ''; -print ''; - -print load_fiche_titre($langs->trans("CommentsOfVoters"), '', ''); - -// Comment list -$comments = $object->getComments(); - -if (!empty($comments)) { - foreach ($comments as $comment) { - if ($user->rights->opensurvey->write) { - print ' '.img_picto('', 'delete.png', '', false, 0, 0, '', '', 0).' '; - } - - print dol_htmlentities($comment->usercomment).': '.dol_nl2br(dol_htmlentities($comment->comment))."
    "; - } -} else { - print ''.$langs->trans("NoCommentYet").'
    '; -} - -print '
    '; - -// Add comment -if ($object->allow_comments) { - print $langs->trans("AddACommentForPoll").'
    '; - print '
    '."\n"; - print $langs->trans("Name").': '."\n"; - print '
    '."\n"; -} - -print '
    '; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php deleted file mode 100644 index f5dadd90..00000000 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ /dev/null @@ -1,708 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * Copyright (C) 2020 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/class/opensurveysondage.class.php - * \ingroup opensurvey - * \brief This file is an example for a CRUD class file (Create/Read/Update/Delete) - * Initialy built by build_class_from_table on 2013-03-10 00:32 - */ - -// Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"; -//require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"; -//require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; - - -/** - * Put here description of your class - */ -class Opensurveysondage extends CommonObject -{ - /** - * @var string ID to identify managed object - */ - public $element = 'opensurvey_sondage'; - - /** - * @var string Name of table without prefix where object is stored - */ - public $table_element = 'opensurvey_sondage'; - - /** - * @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png - */ - public $picto = 'poll'; - - /** - * @var string ID survey - */ - public $id_sondage; - - /** - * @var string description - */ - public $description; - - /** - * @var string email admin - */ - public $mail_admin; - - /** - * @var string admin name - */ - public $nom_admin; - - /** - * Id of user author of the poll - * @var int - */ - public $fk_user_creat; - - /** - * @var string Title - */ - public $title; - - public $date_fin = ''; - - public $date_m; - - /** - * @var int status - */ - public $status = 1; - - /** - * @var string format of survey - */ - public $format; - - /** - * @var int mailsonde - */ - public $mailsonde; - - /** - * @var string subject - */ - public $sujet; - - /** - * @var int Allow comments on this poll - */ - public $allow_comments; - - /** - * @var int Allow users see others vote - */ - public $allow_spy; - - - /** - * Draft status (not used) - */ - const STATUS_DRAFT = 0; - /** - * Validated/Opened status - */ - const STATUS_VALIDATED = 1; - /** - * Closed - */ - const STATUS_CLOSED = 2; - - - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - - /** - * Create object into database - * - * @param User $user User that creates - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - public function create(User $user, $notrigger = 0) - { - global $conf; - - $error = 0; - - // Clean parameters - $this->cleanParameters(); - - // Check parameters - if (!$this->date_fin > 0) { - $this->error = 'BadValueForEndDate'; - dol_syslog(get_class($this)."::create ".$this->error, LOG_ERR); - return -1; - } - - // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."opensurvey_sondage("; - $sql .= "id_sondage,"; - $sql .= "commentaires,"; - $sql .= "fk_user_creat,"; - $sql .= "titre,"; - $sql .= "date_fin,"; - $sql .= "status,"; - $sql .= "format,"; - $sql .= "mailsonde,"; - $sql .= "allow_comments,"; - $sql .= "allow_spy,"; - $sql .= "sujet,"; - $sql .= "entity"; - $sql .= ") VALUES ("; - $sql .= "'".$this->db->escape($this->id_sondage)."',"; - $sql .= " ".(empty($this->description) ? 'NULL' : "'".$this->db->escape($this->description)."'").","; - $sql .= " ".(int) $user->id.","; - $sql .= " '".$this->db->escape($this->title)."',"; - $sql .= " '".$this->db->idate($this->date_fin)."',"; - $sql .= " ".(int) $this->status.","; - $sql .= " '".$this->db->escape($this->format)."',"; - $sql .= " ".((int) $this->mailsonde).","; - $sql .= " ".((int) $this->allow_comments).","; - $sql .= " ".((int) $this->allow_spy).","; - $sql .= " '".$this->db->escape($this->sujet)."',"; - $sql .= " ".((int) $conf->entity); - $sql .= ")"; - - $this->db->begin(); - - dol_syslog(get_class($this)."::create", LOG_DEBUG); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; $this->errors[] = "Error ".$this->db->lasterror(); - } - - if (!$error && !$notrigger) { - global $langs, $conf; - - // Call trigger - $result = $this->call_trigger('OPENSURVEY_CREATE', $user); - if ($result < 0) { - $error++; - } - // End call triggers - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); - $this->error .= ($this->error ? ', '.$errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return $this->id; - } - } - - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @param string $numsurvey Ref of survey (admin or not) - * @return int <0 if KO, >0 if OK - */ - public function fetch($id, $numsurvey = '') - { - $sql = "SELECT"; - $sql .= " t.id_sondage,"; - $sql .= " t.titre as title,"; - $sql .= " t.commentaires as description,"; - $sql .= " t.mail_admin,"; - $sql .= " t.nom_admin,"; - $sql .= " t.fk_user_creat,"; - $sql .= " t.date_fin,"; - $sql .= " t.status,"; - $sql .= " t.format,"; - $sql .= " t.mailsonde,"; - $sql .= " t.allow_comments,"; - $sql .= " t.allow_spy,"; - $sql .= " t.sujet,"; - $sql .= " t.tms"; - $sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as t"; - $sql .= " WHERE t.id_sondage = '".$this->db->escape($id ? $id : $numsurvey)."'"; - - dol_syslog(get_class($this)."::fetch", LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - if ($this->db->num_rows($resql)) { - $obj = $this->db->fetch_object($resql); - - $this->id_sondage = $obj->id_sondage; - $this->ref = $this->id_sondage; //For compatibility - - $this->description = $obj->description; - $this->mail_admin = $obj->mail_admin; - $this->nom_admin = $obj->nom_admin; - $this->title = $obj->title; - $this->date_fin = $this->db->jdate($obj->date_fin); - $this->status = $obj->status; - $this->format = $obj->format; - $this->mailsonde = $obj->mailsonde; - $this->allow_comments = $obj->allow_comments; - $this->allow_spy = $obj->allow_spy; - $this->sujet = $obj->sujet; - $this->fk_user_creat = $obj->fk_user_creat; - - $this->date_m = $this->db->jdate(!empty($obj->tls) ? $obj->tls : ""); - $ret = 1; - } else { - $sondage = ($id ? 'id='.$id : 'sondageid='.$numsurvey); - $this->error = 'Fetch no poll found for '.$sondage; - dol_syslog($this->error, LOG_ERR); - $ret = 0; - } - - $this->db->free($resql); - } else { - $this->error = "Error ".$this->db->lasterror(); - $ret = -1; - } - - return $ret; - } - - - /** - * Update object into database - * - * @param User $user User that modifies - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function update(User $user, $notrigger = 0) - { - global $conf, $langs; - $error = 0; - - // Clean parameters - $this->cleanParameters(); - - // Check parameters - // Put here code to add a control on parameters values - - // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."opensurvey_sondage SET"; - $sql .= " id_sondage=".(isset($this->id_sondage) ? "'".$this->db->escape($this->id_sondage)."'" : "null").","; - $sql .= " commentaires=".(isset($this->description) ? "'".$this->db->escape($this->description)."'" : "null").","; - $sql .= " mail_admin=".(isset($this->mail_admin) ? "'".$this->db->escape($this->mail_admin)."'" : "null").","; - $sql .= " nom_admin=".(isset($this->nom_admin) ? "'".$this->db->escape($this->nom_admin)."'" : "null").","; - $sql .= " titre=".(isset($this->title) ? "'".$this->db->escape($this->title)."'" : "null").","; - $sql .= " date_fin=".(dol_strlen($this->date_fin) != 0 ? "'".$this->db->idate($this->date_fin)."'" : 'null').","; - $sql .= " status=".(isset($this->status) ? "'".$this->db->escape($this->status)."'" : "null").","; - $sql .= " format=".(isset($this->format) ? "'".$this->db->escape($this->format)."'" : "null").","; - $sql .= " mailsonde=".(isset($this->mailsonde) ? ((int) $this->mailsonde) : "null").","; - $sql .= " allow_comments=".((int) $this->allow_comments).","; - $sql .= " allow_spy=".((int) $this->allow_spy); - $sql .= " WHERE id_sondage='".$this->db->escape($this->id_sondage)."'"; - - $this->db->begin(); - - dol_syslog(get_class($this)."::update", LOG_DEBUG); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = "Error ".$this->db->lasterror(); - } - - if (!$error && !$notrigger) { - // Call trigger - $result = $this->call_trigger('OPENSURVEY_MODIFY', $user); - if ($result < 0) { - $error++; - } - // End call triggers - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); - $this->error .= ($this->error ? ', '.$errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Delete object in database - * - * @param User $user User that deletes - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @param string $numsondage Num sondage admin to delete - * @return int <0 if KO, >0 if OK - */ - public function delete(User $user, $notrigger = 0, $numsondage = '') - { - global $conf, $langs; - $error = 0; - - if (empty($numsondage)) { - $numsondage = $this->id_sondage; - } - - $this->db->begin(); - - if (!$error && !$notrigger) { - // Call trigger - $result = $this->call_trigger('OPENSURVEY_DELETE', $user); - if ($result < 0) { - $error++; - } - // End call triggers - } - - if (!$error) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX."opensurvey_comments WHERE id_sondage = '".$this->db->escape($numsondage)."'"; - dol_syslog(get_class($this)."::delete", LOG_DEBUG); - $resql = $this->db->query($sql); - $sql = 'DELETE FROM '.MAIN_DB_PREFIX."opensurvey_user_studs WHERE id_sondage = '".$this->db->escape($numsondage)."'"; - dol_syslog(get_class($this)."::delete", LOG_DEBUG); - $resql = $this->db->query($sql); - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."opensurvey_sondage"; - $sql .= " WHERE id_sondage = '".$this->db->escape($numsondage)."'"; - - dol_syslog(get_class($this)."::delete", LOG_DEBUG); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; $this->errors[] = "Error ".$this->db->lasterror(); - } - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); - $this->error .= ($this->error ? ', '.$errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Return a link to the object card (with optionaly the picto) - * - * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) - * @param int $notooltip 1=Disable tooltip - * @param string $morecss Add more css on link - * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking - * @return string String with URL - */ - public function getNomUrl($withpicto = 0, $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) - { - global $db, $conf, $langs; - global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager; - - if (!empty($conf->dol_no_mouse_hover)) { - $notooltip = 1; // Force disable tooltips - } - - $result = ''; - - $label = img_picto('', $this->picto).' '.$langs->trans("ShowSurvey").''; - $label .= '
    '; - $label .= ''.$langs->trans('Ref').': '.$this->ref.'
    '; - $label .= ''.$langs->trans('Title').': '.$this->title.'
    '; - - $url = DOL_URL_ROOT.'/opensurvey/card.php?id='.$this->id; - - // Add param to save lastsearch_values or not - $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0); - if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) { - $add_save_lastsearch_values = 1; - } - if ($add_save_lastsearch_values) { - $url .= '&save_lastsearch_values=1'; - } - - $linkclose = ''; - if (empty($notooltip)) { - if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowMyObject"); - $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; - } - $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } else { - $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); - } - - $linkstart = ''; - $linkend = ''; - - $result .= $linkstart; - if ($withpicto) { - $result .= img_object(($notooltip ? '' : $label), $this->picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); - } - if ($withpicto != 2) { - $result .= $this->ref; - } - $result .= $linkend; - - return $result; - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return array of lines - * - * @return int <0 if KO, >0 if OK - */ - public function fetch_lines() - { - // phpcs:enable - $this->lines = array(); - - $sql = "SELECT id_users, nom as name, reponses"; - $sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; - $sql .= " WHERE id_sondage = '".$this->db->escape($this->id_sondage)."'"; - - $resql = $this->db->query($sql); - - if ($resql) { - $num = $this->db->num_rows($resql); - $i = 0; - while ($i < $num) { - $obj = $this->db->fetch_object($resql); - $tmp = array('id_users'=>$obj->id_users, 'nom'=>$obj->name, 'reponses'=>$obj->reponses); - - $this->lines[] = $tmp; - $i++; - } - } else { - dol_print_error($this->db); - } - - return count($this->lines); - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - $this->id = 0; - - $this->id_sondage = 'a12d5g'; - $this->description = 'Description of the specimen survey'; - $this->mail_admin = 'email@email.com'; - $this->nom_admin = 'surveyadmin'; - $this->title = 'This is a specimen survey'; - $this->date_fin = dol_now() + 3600 * 24 * 10; - $this->status = 1; - $this->format = 'classic'; - $this->mailsonde = 0; - } - - /** - * Returns all comments for the current opensurvey poll - * - * @return Object[] - */ - public function getComments() - { - $comments = array(); - - $sql = 'SELECT id_comment, usercomment, comment'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'opensurvey_comments'; - $sql .= " WHERE id_sondage='".$this->db->escape($this->id_sondage)."'"; - $sql .= " ORDER BY id_comment"; - $resql = $this->db->query($sql); - - if ($resql) { - $num_rows = $this->db->num_rows($resql); - - if ($num_rows > 0) { - while ($obj = $this->db->fetch_object($resql)) { - $comments[] = $obj; - } - } - } - - return $comments; - } - - /** - * Adds a comment to the poll - * - * @param string $comment Comment content - * @param string $comment_user Comment author - * @param string $user_ip Comment author IP - * @return boolean False in case of the query fails, true if it was successful - */ - public function addComment($comment, $comment_user, $user_ip = '') - { - $now = dol_now(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."opensurvey_comments (id_sondage, comment, usercomment, date_creation, ip)"; - $sql .= " VALUES ('".$this->db->escape($this->id_sondage)."','".$this->db->escape($comment)."','".$this->db->escape($comment_user)."','".$this->db->idate($now)."'".($user_ip ? ",'".$this->db->escape($user_ip)."'" : '').")"; - $resql = $this->db->query($sql); - - if (!$resql) { - return false; - } - - return true; - } - - /** - * Deletes a comment of the poll - * - * @param int $id_comment Id of the comment - * @return boolean False in case of the query fails, true if it was successful - */ - public function deleteComment($id_comment) - { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'opensurvey_comments WHERE id_comment = '.((int) $id_comment).' AND id_sondage = "'.$this->db->escape($this->id_sondage).'"'; - $resql = $this->db->query($sql); - - if (!$resql) { - return false; - } - - return true; - } - - /** - * Cleans all the class variables before doing an update or an insert - * - * @return void - */ - private function cleanParameters() - { - $this->id_sondage = trim($this->id_sondage); - $this->description = trim($this->description); - $this->mail_admin = trim($this->mail_admin); - $this->nom_admin = trim($this->nom_admin); - $this->title = trim($this->title); - $this->status = (int) $this->status; - $this->format = trim($this->format); - $this->mailsonde = ($this->mailsonde ? 1 : 0); - $this->allow_comments = ($this->allow_comments ? 1 : 0); - $this->allow_spy = ($this->allow_spy ? 1 : 0); - $this->sujet = trim($this->sujet); - } - - - /** - * Return status label of Order - * - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto - * @return string Libelle - */ - public function getLibStatut($mode) - { - return $this->LibStatut($this->status, $mode); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return label of status - * - * @param int $status Id statut - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto - * @return string Label of status - */ - public function LibStatut($status, $mode) - { - // phpcs:enable - global $langs, $conf; - - if (empty($this->labelStatus) || empty($this->labelStatusShort)) { - global $langs; - //$langs->load("mymodule"); - $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); - $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Opened'); - $this->labelStatus[self::STATUS_CLOSED] = $langs->transnoentitiesnoconv('Closed'); - $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); - $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Opened'); - $this->labelStatusShort[self::STATUS_CLOSED] = $langs->transnoentitiesnoconv('Closed'); - } - - $statusType = 'status'.$status; - if ($status == self::STATUS_VALIDATED) { - if (0) { - $statusType = 'status1'; - } else { - $statusType = 'status4'; - } - } - if ($status == self::STATUS_CLOSED) { - $statusType = 'status6'; - } - - return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); - } - - - /** - * Return number of votes done for this survey. - * - * @return int Number of votes - */ - public function countVotes() - { - $result = 0; - - $sql = " SELECT COUNT(id_users) as nb FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; - $sql .= " WHERE id_sondage = '".$this->db->escape($this->ref)."'"; - - $resql = $this->db->query($sql); - if ($resql) { - $obj = $this->db->fetch_object($resql); - if ($obj) { - $result = $obj->nb; - } - } else { - $this->error = $this->db->lasterror(); - $this->errors[] = $this->error; - } - - return $result; - } -} diff --git a/htdocs/opensurvey/css/style.css b/htdocs/opensurvey/css/style.css deleted file mode 100644 index e7f0d279..00000000 --- a/htdocs/opensurvey/css/style.css +++ /dev/null @@ -1,531 +0,0 @@ -/* Copyright (C) 2004-2015 Laurent Destailleur - * Copyright (C) 2006 Rodolphe Quiedeville - * Copyright (C) 2007-2012 Regis Houssin - * Copyright (C) 2011 Philippe Grand - * Copyright (C) 2012 Juanjo Menent - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -.survey_invitation -{ - color: #445566; - font-weight: bold; -} - -.corps { -font-family: "Lucida Grande",Verdana,Arial,sans-serif; -font-size: 14px; -margin: auto; -padding: 20px; -overflow-x: auto; -border: 2px solid #999999; -background-color: #fff; -box-shadow: 2px 2px 2px #F5F5F5; --moz-border-radius: 10px; -border-radius: 10px; -} - - -.index_date, .index_sondage { -float: left; -width: 50%; -text-align: center; -} - -.orange { -color: #fef4e9; -border: solid 1px #da7c0c; -background: #f78d1d; -background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20)); -background: -moz-linear-gradient(top, #faa51a, #f47a20); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); -margin-left: 4px; -margin-right: 4px; -} -.orange:active { -color: #fcd3a5; -background: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a)); -background: -moz-linear-gradient(top, #f47a20, #faa51a); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f47a20', endColorstr='#faa51a'); -} -.orange:hover { -background: #f47c20; -background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015)); -background: -moz-linear-gradient(top, #f88e11, #f06015); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015'); -} - - -.blue { -color: #d9eef7; -border: solid 1px #0076a3; -background: #0095cd; -background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5)); -background: -moz-linear-gradient(top, #00adee, #0078a5); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); -margin-left: 4px; -margin-right: 4px; -} -.blue:active { -color: #80bed6; -background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); -background: -moz-linear-gradient(top, #0078a5, #00adee); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); -} -.blue:hover { -background: #007ead; -background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); -background: -moz-linear-gradient(top, #0095cc, #00678e); -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); -} - - -/* -========================================================================== - -Université de Strasbourg - Direction Informatique -Auteur : Guilhem BORGHESI -Création : Février 2008 - -borghesi@unistra.fr - -Ce logiciel est régi par la licence CeCILL-B soumise au droit français et -respectant les principes de diffusion des logiciels libres. Vous pouvez -utiliser, modifier et/ou redistribuer ce programme sous les conditions -de la licence CeCILL-B telle que diffusée par le CEA, le CNRS et l'INRIA -sur le site "http://www.cecill.info". - -Le fait que vous puissiez accéder à cet en-tête signifie que vous avez -pris connaissance de la licence CeCILL-B, et que vous en avez accepté les -termes. Vous pouvez trouver une copie de la licence dans le fichier LICENCE. - -========================================================================== - -Université de Strasbourg - Direction Informatique -Author : Guilhem BORGHESI -Creation : Feb 2008 - -borghesi@unistra.fr - -This software is governed by the CeCILL-B license under French law and -abiding by the rules of distribution of free software. You can use, -modify and/ or redistribute the software under the terms of the CeCILL-B -license as circulated by CEA, CNRS and INRIA at the following URL -"http://www.cecill.info". - -The fact that you are presently reading this means that you have had -knowledge of the CeCILL-B license and that you accept its terms. You can -find a copy of this license in the file LICENSE. - -========================================================================== -*/ - -/* -Le fichier style.css est le fichier de style de studs. Il se trouve à la racine -du répertoire studs. Il contient toutes les mises en forme des fichiers PHP -de Studs. -*/ -/*bandeau de titre*/ -div.bandeau{ - line-height:35px; - text-align:center; - background-color: #0b419b; - color:white; - vertical-align:middle; - font-size:35px; - font-family:arial, sans-serif; - padding:8px; - height:35px; - position:static; - top:6px; - left:6px; - right:6px; - -} -div.logo{ - height:64px; - float:right; - top:8px; - right:8px; - margin-left: 0; - margin-right:0; - margin-bottom:auto; -} -/*Sous bandeau avec bouton de navigation*/ -div.bandeautitre{ - height:17px; - font-size:14px; - font-weight:bold; - text-align:center; - vertical-align:middle; - font-family:arial, sans-serif; - padding:3px; - position:static; - top:57px; - left:6px; - right:6px; -} -div.sousbandeau{ - height:17px; - background-color: #DDDDDD; - font-size:11px; - color:black; - vertical-align:middle; - font-family:arial, sans-serif; - padding:3px; - position:static; - top:80px; - left:6px; - right:6px; -} -/*bandeau de pied*/ -div.surbandeaupied{ - background-color: #0077DD; - position:absolute; - bottom:30px; - left:6px; - right:6px; - height:6px; -} -div.bandeaupied{ - text-align:center; - background-color: #0b419b; - color:white; - font-size:11px; - font-family:arial, sans-serif; - padding:6px; - position:fixed; - bottom:6px; - left:6px; - right:6px; - margin:2px; -} -div.surbandeaupiedmobile{ - background-color: #0077DD; - position:static; - bottom:32px; - left:6px; - right:6px; - height:6px; -} -div.bandeaupiedmobile{ - text-align:center; - background-color: #0b419b; - color:white; - font-size:11px; - font-family:arial, sans-serif; - padding:6px; - position:static; -} -/*les boutons se trouvant dans le sousbandeau*/ -div.sousbandeau a, div.sousbandeau span.sousbandeaulangue a { - background-color: #0b419b; - height:16px; - padding: 2px 6px 2px 6px; - vertical-align:middle; - text-align:center; - margin-left:10px; - margin-right:10px; - font-family:arial, sans-serif; - color:white; - font-size:10px; - text-decoration:none; -} -span.sousbandeaulangue { - margin-left:6px; - margin-right:6px; - float:right; -} -/*corps de la page index.php*/ -div.corps{ - font-size:12px; - font-family:arial, sans-serif; - position:static; - padding:15px; -} -div.corps table{ - font-family:arial, sans-serif; - font-size:12px; - font-weight:bold; -} -div.corpscentre{ - font-size:12px; - font-family:arial, sans-serif; - text-align:center; - position:absolute; - top:150px; - margin-right:10%; - margin-left:10%; - width:80%; -} -/*affichage des jours*/ -div.jourschoisis { - background-color: #DDD; - padding:10px; - text-align: center; - position:static; - left:700px; - top:170px; - font-size:12px; - width:100%; -} -/*presenation des pages*/ -div.bodydate { - padding:10px; - font-family:arial, sans-serif; - font-size:12px; - text-align:center; - position:static; - top:330px; - left:20px; - right:20px; -} -div.bodydate table{ - font-family:arial, sans-serif; - font-size:12px; - font-weight:bold; -} -/*cadre de commentaires*/ -div.presentationdate { - width:100%; - font-family:arial, sans-serif; - text-align:center; - font-size:12px; - border-top:1px solid; - border-bottom:1px solid; - border-left: none; - border-right: none; - border-color:#969696; - position:static; - top:110px; - margin-top:10px; -} -div.presentationdatefin { - width:40%; - padding:10px; - font-family:arial, sans-serif; - text-align:center; - font-size:12px; - border: 1px solid; - margin-top: 10px; - margin-left: 30%; - margin-right: 30%; - position:static; -} -/*cadre principal de studs.php*/ -div.cadre { - padding:10px; - font-family:arial, sans-serif; - font-size:12px; - position:static; - top:235px; - text-align:center; - margin:0 auto; -} -/*la table des résultats dans l'affichage de sondage*/ -div.cadre table.resultats { - text-align: center; - margin:0 auto; -} -td.nom { - min-width: 160px; -} -@media only screen and (max-width: 767px) -{ - td.nom { - min-width: 100px; - } -} - -td.vide { - min-width: 60px; -} -div.cadre td { - height:21px; -} -/*case de tableau OK dans affichage de sondage*/ -div.cadre td.ok { - background-color: #66FF99; - font-size:12px; - text-align:center; -} -/*Case de tableau NON dans affichage de sondage*/ -div.cadre td.non { - background-color: #FF7777; - min-width: 60px; -} -/*Case de tableau VIDE dans affichage de sondage*/ -div.cadre td.vide { - background-color: #DDDDDD; - text-align:center; - padding: 4px; -} -/*Case de tableau contenant les noms dans affichage de sondage*/ -div.cadre td.nom { - background-color: #DDDDDD; - text-align:center; - padding: 8px; -} -div.cadre td.casevide { - background-color: white; - text-align:center; -} -/*les cases contenant les sommes de chaque colonne dans l'affichage de calendrier*/ -div.cadre td.somme { - font-weight: bold; - font-size:14px; -} - -/*Case de tableau SUJET dans affichage de sondage*/ -div.cadre td.sujet, div.cadre td.jour, div.cadre td.heure { - border: 2px; - background-color: #DDDDDD; - font-size:14px; - padding:1px 5px; -} - -div.cadre td.annee { - border: 2px; - background-color: #969696; - font-weight: bold; - font-size:14px; - padding:1px 5px; -} -div.cadre td.mois { - border: 2px; - background-color: #C0C0C0; - font-weight: bold; - font-size:14px; - padding:1px 5px; -} - -/*jour de la semaine dans calendrier*/ -div.calendrier td.joursemaine { - width:65px; - text-align: center; - font-family:arial, sans-serif; - font-size:14px; - border: 2px; - background-color: white; -} -div.calendrier td.jourwe { - width:65px; - text-align: center; - font-family:arial, sans-serif; - font-size:14px; - border: 2px; - background-color: #C0C0C0; -} -/*jour avant le premier jour du mois dans calendrier*/ -div.calendrier td.avant, div.calendrier td.libre { - width:65px; - text-align: center; - border: 2px; - font-family:arial, sans-serif; - font-size: 1.1em; - background-color: #DDDDDD; -} -/*jour libre dans calendrier*/ -div.calendrier td.libre { - background-color: #66FF99; -} -/*jour deja selectionné dans calendrier*/ -div.calendrier td.choisi { - width:65px; - text-align: center; - border: 2px; - background-color: #0077DD; -} -/* Le paragraphe de fin */ -p.affichageresultats{ - text-align: center; - font-family:arial, sans-serif; -} - -div.comment{ - width:100%; -} - -div.comment span.usercomment{ - font-weight:bold; -} - -a.affichageexport{ - text-align: center; - font-family:arial, sans-serif; - font-size:10px; - margin-left:10px; - text-decoration: none; -} -div.titregestionadmin{ - text-align: center; - font-weight:bold; - font-size:18px; - padding:10px; -} - - -.bouton { - /* width: 65px; */ - border:0; - padding:0 0 0 0; - margin:0; - cursor:pointer; - font-family:arial, sans-serif; - background: transparent !important; -} -.choisi .bouton { - color: #fff; -} -/*les boutons pour choisir un jour non selectionné*/ -.ON { - background-color: #BBBBCC; -} - -/*les boutons pour deselectionner un jour deja choisi*/ -.OFF { - background-color: #AAFFAA; -} - -div.nouveau_sondage a { - text-decoration: none; -} -div.nouveau_sondage span img { - vertical-align: middle; - border: 0; -} -div.nouveau_sondage span { - margin-left: 20px; -} - -div.error, div.addcomment { - text-align:center; - border: 1px; - font-family: arial, sans-serif; - font-size: 13px; -} -ul.exports { - text-align:center; - list-style-type : none ; -} -li.error { - color: red; -} - -.half { - -moz-transform:scale(0.5); - -webkit-transform:scale(0.5); - transform:scale(0.5); -} diff --git a/htdocs/opensurvey/exportcsv.php b/htdocs/opensurvey/exportcsv.php deleted file mode 100644 index a8a23178..00000000 --- a/htdocs/opensurvey/exportcsv.php +++ /dev/null @@ -1,142 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/exportcsv.php - * \ingroup opensurvey - * \brief Page to list surveys - */ - - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php"; - - -$action = GETPOST('action', 'aZ09'); -$numsondage = ''; -if (GETPOST('id')) { - $numsondage = GETPOST("id", 'alpha'); -} - -// Initialize Objects -$object = new Opensurveysondage($db); -$result = $object->fetch(0, $numsondage); -if ($result <= 0) { - dol_print_error('', 'Failed to get survey id '.$numsondage); -} - -// Security check -if (empty($user->rights->opensurvey->read)) { - accessforbidden(); -} - - -/* - * Actions - */ - - - -/* - * View - */ - -$now = dol_now(); - -$nbcolonnes = substr_count($object->sujet, ',') + 1; -$toutsujet = explode(",", $object->sujet); -$somme = array(); -// affichage des sujets du sondage -$input = $langs->trans("Name").";"; -for ($i = 0; $toutsujet[$i]; $i++) { - if ($object->format == "D") { - $input .= ''.dol_print_date($toutsujet[$i], 'dayhour').';'; - } else { - $input .= ''.$toutsujet[$i].';'; - } -} - -$input .= "\r\n"; - -if (strpos($object->sujet, '@') !== false) { - $input .= ";"; - for ($i = 0; $toutsujet[$i]; $i++) { - $heures = explode("@", $toutsujet[$i]); - $input .= ''.$heures[1].';'; - } - - $input .= "\r\n"; -} - - -$sql = 'SELECT nom as name, reponses'; -$sql .= ' FROM '.MAIN_DB_PREFIX."opensurvey_user_studs"; -$sql .= " WHERE id_sondage='".$db->escape($numsondage)."'"; -$sql .= " ORDER BY id_users"; -$resql = $db->query($sql); -if ($resql) { - $num = $db->num_rows($resql); - $i = 0; - while ($i < $num) { - $obj = $db->fetch_object($resql); - - // Le name de l'utilisateur - $nombase = str_replace("°", "'", $obj->name); - $input .= $nombase.';'; - - //affichage des resultats - $ensemblereponses = $obj->reponses; - for ($k = 0; $k < $nbcolonnes; $k++) { - if (empty($somme[$k])) { - $somme[$k] = 0; - } - $car = substr($ensemblereponses, $k, 1); - if ($car == "1") { - $input .= 'OK;'; - $somme[$k]++; - } elseif ($car == "2") { - $input .= ';'; - $somme[$k]++; - } else { - $input .= 'KO;'; - } - } - - $input .= "\r\n"; - $i++; - } -} else { - dol_print_error($db); -} - - -$filesize = strlen($input); -$filename = $numsondage."_".dol_print_date($now, '%Y%m%d%H%M').".csv"; - - - -header('Content-Type: text/csv; charset=utf-8'); -header('Content-Length: '.$filesize); -header('Content-Disposition: attachment; filename="'.$filename.'"'); -header('Cache-Control: max-age=10'); -echo $input; - -exit; diff --git a/htdocs/opensurvey/img/accept-24.png b/htdocs/opensurvey/img/accept-24.png deleted file mode 100644 index e70c50cf6226751d02dbd4535821b1e234ffcf20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1477 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 diff --git a/htdocs/opensurvey/img/add-24.png b/htdocs/opensurvey/img/add-24.png deleted file mode 100644 index 068a2325ff74ccfc78888c26f52034b02168b572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1185 zcmV;S1YY}zP)EN2TFL3_5DWygM3fdn?1v4^k|= zug0+B22>qoKtw*ZgKBqBPx?OrOUZq_6SQ9ojIyEWCO?e7sK??*YAk=I!r~`t%zdE6 zv^#o?xoSk8;}$g8*7cA&?#v4s``Xm4JPz06q0h6!=ob>~Z@+x9Q`9(q4^jeN>A4Iqc z3mrMPd#%VZH5Gh{TS2VR|AiM)#aSF>76fD0 zC#e&@h(IAdnJJU59wd{g@U@GkR zz~NZ`T7juIbQpft!` z^#LCLsHPja;L23UxF8%6%H&nh&dAD*0|1am9oVM}2=}n*B+LqWGtEl{N>% zJ|_~<)1x7^YTvOGf@`05KIw}VhpZTLp%k8dyoFC+-#Puw@eQIVcF*xz>fyb$cLgG5 zMl{k)iG?PO7Az{W)Om;+AGD$V{s3HlbpU@W>fyb$_XKfx@Pv4%!u4ROlO*rN6IyF; z5UTAC#-4ji@wcKL-dkx$2to+%KPD0KQ0)h1@M7nt+~&t0)%OOY%#IYOvLyzyP7K0| zb5osu@%{-!QS6@Mwba9V3vEcv;g%6ekm%(X7-?F!EqZ>p)H@i2LR-?fyxD0Q!5N66 z*gfabBP@#Ia80`y5PLeA70%aK#V@Y*$Ni9fL&Oh#@ul+vJpNgoZG0khLj=fj+nfhY zrZGt_blPv>7gw=usbOCelg#H{oP{Wge^?VXFP_8Y-IKsHvh(g&cj1JRY6rg+_uG(m zO*Fz+BzSn*>3I-Eak6~Mg$d9PBlv)HV1loMm<7om8lAJ9k>83{w*@11MJ#Mf1gEVt z(xdvKF5DD*xf*68;MX80KgAp-pqr!#qLY zW8v^ZAt25?&iciZ*)JfI=4+m5!On{-aeg#HXD7garXAkX1$a*p;4?0X?-ma45Kkx8 z{DpdZamF7ggH*wGT5}m3(OrU&I6ZMTlWe0Nf&GJ$$o(X8 z$sVOm^;jLI`=(5z`zG^OJtpWb%Jm_~{|fLwD-lBp7bE-700000NkvXXu0mjfL+3sg diff --git a/htdocs/opensurvey/img/calendar-32.png b/htdocs/opensurvey/img/calendar-32.png deleted file mode 100644 index 9ba72ef55b7c0bd4d296cf776f6a7d6bc0253cf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 zcmV;P24VS$P)7q>$=4AJe%?R{esKwVtKd6BY1s2@lO|^!!QhDvVh}2 zOp{@gg?w6{V5VUhgfJ}7eB3b1ufMw+Fz@@dp>~4F@mGeA9DV-O zv0sN6#4v`87ZUcrl#H#rcC?p%H>Ori|5Wv)`txLFcypA%7ya_1`HnZrQPA| z`nmqcDK>}em_B$&OJm&+BM2dpvEwJ5Jayt&-}C3r`RB}E_@iMM8^@0wy#v%NNvQ0D zsPYTj+B?v<-vFPisKeXZ+o6R*kQGJm>4`v5RnYvxNF)NM(*;SA7Dl2Gh_Vca!#Q1| zzO}Utz54c_sM6lf&Ms(Lh|byc?(S~5-ENB2h0$pAy&MI;`o8vMD$y$($AKj+4^U)z zjwSPZ2D9c_E$bRowO2+CANs2G3@|{ut_L|drZ$o$TIgSpcXxH;(v`~)1rgzJ2&$qK zBjcn^C*ySYr}}6q48&wm6zk!W5-x4C1bTCM~m>;=U=ebD;(0$-qC?Bszy;s z33PoRrcR#B`m>LgLw*I)i&o2yU3>8HC!ZkQ1c7G_Ki1a5rYel!!Taw=ZCxEItExeW zf%^Iewm=&BpDAFSO~(0-9yOBP;rHKv&+br?M97lF7BvZB=gspRWLd)Gi4zeF1Yp91 z76|4g=a|d0fF(=TLpEdjH2Ry4GA)SGva;X$tcvE=kucaRe3rvmc+42a+tOd&oO55^ zJ>?QcJ1hv90{yx?rBZoHhw)ePCr$VCd?aw*v)=PP55!i5JUKqr6|qKOc6JuyV`G-8 zR}zHsltg^BQW1C<__F*h6xI~~Qx`uc{*O^lE0xH+h7fq;|am!}&~ZB8#x zI!Gqq6$FZdpMU-dpFV!nbI7$pH45N)t)aEWKzXh!4m?lyFU!9K#7z~H@87+rby2Gw z@ZC08?d;&rSL^i>Fkm^IqUDDKb_Gs(<%xJLxW5-Lm;R?JT_6`I$gW4db8pE417)dR zvI;cU5fGQ7_Z~e8l?fyzg7irtc5o;*03*4qGKd7(;;jnU!Hwl2h@>=gL0`2GjmC`v zv)yi^)oO}N=e9#%75T}f9?1ppMewdS2nA&YH=cr=vY$SG?w;JkKY#v#?XAr&Ne7=k zeS%0UMqHhowL*){sH_(lP!w!bjqvz~#|pfmp&@-UJ~64_+}c=Y3BCpg4Gazr;g?@$ z@$$t>k)~guCWCYUdnGJyty7azn4X$~QRU?11mAO5`S9@*hKEP+uBqbMM3^oPXD5st$ zj~`1`*Kq{w2a0+T+TY*9+4&j0J>W`VZrMXX_1Sd-eE9G|AKvNN(U3vLvXoZsUqjGEKELqbtV>!Q(S ot+=>CdUd0B*{0d3B9n)B07di=ZMiIMRR91007*qoM6N<$f|)ExsQ>@~ diff --git a/htdocs/opensurvey/img/chart-32.png b/htdocs/opensurvey/img/chart-32.png deleted file mode 100644 index 4759abec3e9d37002cb3fa2f6b8d68d38ffe261a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmV-$29NoPP)&);X%rb$HJ;yWHk$Q1twtliY}c+zNC9J%>r)XUN|Tr*9ym@4M-c^(iHdm~ zTrA&k0P$!cV=z(SvVO$S#@uiKKv~2XGip-;jch-fE`8tX<>$S1)jdvs&8oF0y>w-C zLid0c^4=5rO|TJF7}<8P#(#K+nwy?}l=Nnw(QETSAVI+9^#AhIl{>PUIe*?FUUAD0 zU9tD533!o#y)Wk?0iawC>mnSiq&e^7l|_rc6t|Y%%cNNz4%ecvS-H_{Sia6YCe2uI z%mkeGWyGo!E(-=A872_reGZmXv#hqH*{mwGoZ#C1-sJh08SGqD1-vJ;?wA0AVIWa0 zT_&MJ04lw*Jd3~P2>#EM-PJxjXn=k-MC=E~{+9%tL#m#}P03v~fhlsFMc9gYN% z800trd}zVw4JR_VA0BY=sjRNT7QVk32Vf`};$s>cH$UJW4u zbN~<%h*U`d0|*cSDWoxg^=QwbC5V=D?;>1b6@&MBd;spy77XtJ(U9gSumL9^xgZ4q z0_p{|9%mJo6WR!>C*FdPifCcuQ1UQ(A8Zx1V7wJ{&VwrIq_nq+v!F__9vgr%awRAv z;1Tgy6l(?mZUi9L5}-_=1Q3M);2dxw2~^TpJ9GU}9z?}>5v(eGKnV~^08m`+(Y_lL z5k-9f$Q1xR9)KVH>EH9(z5cWQckU$zB_OCMP9Yz;4?N(EiE>fI3Nq(_03ZVZ??U_n zV&WqMoPOTL4*>N5g}ueNe3&Ht)+%84 zp#Z0zbKzrw9~on!EKP`v!Fmr6`sYgsr%E2MB-jFF3!Fo87w8m3a6U?{1Hw%>v-Ups z|H;>%IrF$@zw7{t#5(`fY8FQTD;6!_c@Mugm+rZW3wG{h_t-dIg!#=nt5+_=j_*cc zXp13N@J`Ua9YSlFz`z>foLh0*kN4-T{rES3`|my0`;!Xjlbp5RN@hFVUAeW?t5uRD zrjjPybmN-Rv)vx&Z{N+$Hm;@p%`Y%@&S?h$Kn{ZzgakA+-8(HjWCA6KHHN|_dR(6O zZxO{&^xiyoADQlS_O*+G*7@Plt$K|+-E14pV!r%EuVUQ?K1K6>55{LzY)Bwou#iO? zHX*r1Y>wKzgb^!v%h1Y!67h7VrzQ>@nN*u?JO5*tWl_b7D1>*1*?ckr5ZkMTl z{f*0ZZ0F`rdOB;if0O3!KY@nGMY(i`XLf210Jr}3bnf?BTvEk*Pp8x7>b<*qNhQ0z z;V?Sstn)Xh^4#3H=cwwMG>*wCDaIH?6@tPdac`XZp1;x9`4`fu%RrS&c1Fzf669Xb zr+?%7;=-qW|Gul4*f+L2tyG@+_Lo2B--e^;->01uJLey4t$Ts<{-J3Sr&(5^S~&bU zjVSbg;xZcB|H#;mF*I7w)o3*vq)9T;SEcVg)(z~uVx2HGHOZA%?rj&)uX@W%p7m8mWH>?n^3VS^ zUi`iLxqX3k?lHA2tInU-VqU9R0_5J4JCAchaZFM8N(z8ei^HDw+UGs_Vh)nwI_Ueq z{_`T|+%x8K`+VT$1q4}^ky}T*-C<&K(y8i4ipbybs%JgHazpAXKm665Klh!Ve(956 u|G@w<7fH|^lpqmJ zbU$bY4C*q*fs!|F+`#YE_3PJh_Uu{wevKM6%I@5`t%o0d3dfEe#d^IiUaeM<#oh55 zb+}|*BZYHLNGZcT93r`=Fr}%)T?rMW9YNa=c4627tTGEXKsjLh0A{2ocehBzC}5GO zMid0F<4ZRv)hX%zg9rE{boJ_0oIigaz^GB9?Dp+jdhUf+aN^`CNNO*dl@tVnwMRl& z#S}q?opR5Xb1smm!|OVLvTR{eyjr(eH&AJxsZ)(yrvepshtoxJpDYb!67Cub+J+LT z0E)pT225b~b>u$9Mb6$xEl}7 zMvXwYt!JKl2`5jV1}LZpf(;(R4{HdJ@4}=B4c?Xd>|i2ofRZv&3YZkA^bI9IQZoFV zc2a2szb+M3ob{SXA!j zl)S1czV^nO`fs1Gz3Ej0E5ag)V&j7?bQJsei|(5J~5QpkGvp& z>Y*Z$4tMW?Qed%ann-CS1E|zPpoCN73@<_o}zElYg0ocX68f99Wm^_9kU@{iZp5JWFPumKawiPW7MtYmv` zo7>Rl1q}4VVCf+cmaMxksGHBe^Og-xe@v2w?WA}p4WYsaIh+*T+bvH@WlOV8Jy14K zDchXL;dUqGwxMtXl%=|cLU9VJimU`xVps(-Qs<>a2_jdJNInPL__Ih7

    sjKB3&r^&^#ntVf|B|O|$*UT$YGG@) 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 KMNUMnLSTYh(ntjW diff --git a/htdocs/opensurvey/img/medaille.png b/htdocs/opensurvey/img/medaille.png deleted file mode 100644 index 269ab6328dd08ec3e2484f4ad88bdfa3066e6c33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 656 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 QwEzGB07*qoM6N<$f?M-lY5)KL diff --git a/htdocs/opensurvey/img/sondage2.png b/htdocs/opensurvey/img/sondage2.png deleted file mode 100644 index cc5e8f4bbb4483b934f0f9ef6c378f37461dbc6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67659 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%0DUek{rKH5cp3E=PJYz4D*;{gO4e+{EINE)p67 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 - * Copyright (C) 2019 Nicolas ZABOURI - * Copyright (C) 2019 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/index.php - * \ingroup opensurvey - * \brief Home page of opensurvey area - */ - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; - -// Load translation files required by the page -$langs->load("opensurvey"); - -// Security check -if (empty($user->rights->opensurvey->read)) { - accessforbidden(); -} - -$hookmanager = new HookManager($db); - -// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array -$hookmanager->initHooks(array('opensurveyindex')); - - -/* - * View - */ - -$nbsondages = 0; -$sql = 'SELECT COUNT(*) as nb'; -$sql .= ' FROM '.MAIN_DB_PREFIX.'opensurvey_sondage'; -$sql .= ' WHERE entity IN ('.getEntity('survey').')'; -$resql = $db->query($sql); -if ($resql) { - $obj = $db->fetch_object($resql); - $nbsondages = $obj->nb; -} else { - dol_print_error($db, ''); -} - - -$title = $langs->trans("OpenSurveyArea"); -llxHeader('', $title); - -print load_fiche_titre($title, '', 'poll'); - - -print '
    '; - -print '
    '; -print ''; -print ''; -print ''; -print ''; -print ""; -//print ''; -print '
    '.$langs->trans("OpenSurveyArea").'
    '.$langs->trans("NbOfSurveys").''.$nbsondages.'
    '.$langs->trans("Total").''; -//print $total; -//print '
    '; -print '
    '; - -print '
    '; - -$parameters = array('user' => $user); -$reshook = $hookmanager->executeHooks('dashboardOpenSurvey', $parameters, $object); // Note that $action and $object may have been modified by hook - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/lib/opensurvey.lib.php b/htdocs/opensurvey/lib/opensurvey.lib.php deleted file mode 100644 index c9c75b01..00000000 --- a/htdocs/opensurvey/lib/opensurvey.lib.php +++ /dev/null @@ -1,278 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ - -/** - * \file htdocs/opensurvey/fonctions.php - * \ingroup opensurvey - * \brief Functions for module - */ - -/** - * Returns an array with the tabs for the "Opensurvey poll" section - * It loads tabs from modules looking for the entity Opensurveyso - * - * @param Opensurveysondage $object Current viewing poll - * @return array Tabs for the opensurvey section - */ -function opensurvey_prepare_head(Opensurveysondage $object) -{ - global $langs, $conf; - - $h = 0; - $head = array(); - - $head[0][0] = 'card.php?id='.$object->id_sondage; - $head[0][1] = $langs->trans("Survey"); - $head[0][2] = 'general'; - $h++; - - $head[1][0] = 'results.php?id='.$object->id_sondage; - $head[1][1] = $langs->trans("SurveyResults"); - $nbVotes = $object->countVotes(); - if ($nbVotes > 0) { - $head[$h][1] .= ''.($nbVotes).''; - } - $head[1][2] = 'preview'; - $h++; - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab - // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'opensurveypoll'); - - complete_head_from_modules($conf, $langs, $object, $head, $h, 'opensurveypoll', 'remove'); - - return $head; -} - -/** - * Show header for new member - * - * @param string $title Title - * @param string $head Head array - * @param int $disablejs More content into html header - * @param int $disablehead More content into html header - * @param array $arrayofjs Array of complementary js files - * @param array $arrayofcss Array of complementary css files - * @param string $numsondage Num survey - * @return void - */ -function llxHeaderSurvey($title, $head = "", $disablejs = 0, $disablehead = 0, $arrayofjs = '', $arrayofcss = '', $numsondage = '') -{ - global $conf, $langs, $mysoc; - global $dolibarr_main_url_root; - - //$replacemainarea = (empty($conf->dol_hide_leftmenu) ? '
    ' : '').'
    '; - - top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss, 0, 1); // Show html headers - - print ''; - - print ''."\n"; - print '
    '."\n"; - print '
    '."\n"; - print ''; - print ''."\n"; - print "\n"; - - // Show logo (search order: logo defined by PAYMENT_LOGO_suffix, then PAYMENT_LOGO, then small company logo, large company logo, theme logo, common logo) - // Define logo and logosmall - $logosmall = $mysoc->logo_small; - $logo = $mysoc->logo; - //print ''."\n"; - // Define urllogo - $urllogo = ''; - $urllogofull = ''; - if (!empty($logosmall) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$logosmall)) { - $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); - $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/thumbs/'.$logosmall); - } elseif (!empty($logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$logo)) { - $urllogo = DOL_URL_ROOT.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); - $urllogofull = $dolibarr_main_url_root.'/viewimage.php?modulepart=mycompany&entity='.$conf->entity.'&file='.urlencode('logos/'.$logo); - } - - // Output html code for logo - if ($urllogo) { - print ''; - } - - if (!empty($conf->global->OPENSURVEY_IMAGE_PUBLIC_INTERFACE)) { - print '
    '; - print ''; - print '
    '; - } - - print '

    '; -} - -/** - * Show footer for new member - * - * @return void - */ -function llxFooterSurvey() -{ - print '
    '; - print '
    '; - print '
    '; - - printCommonFooter('public'); - - dol_htmloutput_events(); - - print "\n"; - print "\n"; -} - - -/** - * get_server_name - * - * @return string URL to use - */ -function get_server_name() -{ - global $dolibarr_main_url_root; - - $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); - //$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file - //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current - - $url = $urlwithouturlroot.dol_buildpath('/opensurvey/', 1); - - if (!preg_match("|/$|", $url)) { - $url = $url."/"; - } - - return $url; -} - -/** - * Fonction vérifiant l'existance et la valeur non vide d'une clé d'un tableau - * - * @param string $name La clé à tester - * @param array $tableau Le tableau où rechercher la clé ($_POST par défaut) - * @return bool Vrai si la clé existe et renvoie une valeur non vide - */ -function issetAndNoEmpty($name, $tableau = null) -{ - if ($tableau === null) { - $tableau = $_POST; - } - - return (isset($tableau[$name]) === true && empty($tableau[$name]) === false); -} - - -/** - * Fonction permettant de générer les URL pour les sondage - * - * @param string $id L'identifiant du sondage - * @param bool $admin True pour générer une URL pour l'administration d'un sondage, False pour un URL publique - * @return string L'url pour le sondage - */ -function getUrlSondage($id, $admin = false) -{ - if ($admin === true) { - $url = get_server_name().'results.php?id='.$id; - } else { - $url = get_server_name().'/public/studs.php?sondage='.$id; - } - - return $url; -} - - -/** - * Generate a random id - * - * @param int $car Length of string to generate key - * @return string - */ -function dol_survey_random($car) -{ - $string = ""; - $chaine = "abcdefghijklmnopqrstuvwxyz123456789"; - mt_srand((double) microtime() * 1000000); - for ($i = 0; $i < $car; $i++) { - $string .= $chaine[mt_rand() % strlen($chaine)]; - } - return $string; -} - -/** - * Add a poll - * - * @return void - */ -function ajouter_sondage() -{ - global $db, $user; - - require_once DOL_DOCUMENT_ROOT.'/opensurvey/class/opensurveysondage.class.php'; - - $sondage = dol_survey_random(16); - - $allow_comments = empty($_SESSION['allow_comments']) ? 0 : 1; - $allow_spy = empty($_SESSION['allow_spy']) ? 0 : 1; - - // Insert survey - $opensurveysondage = new Opensurveysondage($db); - $opensurveysondage->id_sondage = $sondage; - $opensurveysondage->description = $_SESSION['description']; - $opensurveysondage->mail_admin = $_SESSION['adresse']; - $opensurveysondage->nom_admin = $_SESSION['nom']; - $opensurveysondage->title = $_SESSION['title']; - $opensurveysondage->date_fin = $_SESSION['champdatefin']; - $opensurveysondage->format = $_SESSION['formatsondage']; - $opensurveysondage->mailsonde = $_SESSION['mailsonde']; - $opensurveysondage->allow_comments = $allow_comments; - $opensurveysondage->allow_spy = $allow_spy; - $opensurveysondage->sujet = $_SESSION['toutchoix']; - - $res = $opensurveysondage->create($user); - - if ($res < 0) { - dol_print_error($db); - } - - unset($_SESSION["title"]); - unset($_SESSION["nom"]); - unset($_SESSION["adresse"]); - unset($_SESSION["description"]); - unset($_SESSION["mailsonde"]); - unset($_SESSION['allow_comments']); - unset($_SESSION['allow_spy']); - unset($_SESSION['toutchoix']); - unset($_SESSION['totalchoixjour']); - unset($_SESSION['champdatefin']); - - $urlback = dol_buildpath('/opensurvey/card.php', 1).'?id='.$sondage; - - header("Location: ".$urlback); - exit(); -} diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php deleted file mode 100644 index 5700909c..00000000 --- a/htdocs/opensurvey/list.php +++ /dev/null @@ -1,576 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/list.php - * \ingroup opensurvey - * \brief Page to list surveys - */ - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php"; - -// Load translation files required by the page -$langs->load("opensurvey"); - -$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ... -$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) -$show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ? -$confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation -$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button -$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list -$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'opensurveylist'; // To manage different context of search -$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') -$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); - -$id = GETPOST('id', 'alpha'); -$search_ref = GETPOST('search_ref', 'alpha'); -$search_title = GETPOST('search_title', 'alpha'); -$search_status = GETPOST('search_status', 'alpha'); - -// Load variable for pagination -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) { - $page = 0; -} // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; - -// Initialize technical objects -$object = new Opensurveysondage($db); -$opensurvey_static = new Opensurveysondage($db); - -$extrafields = new ExtraFields($db); -$diroutputmassaction = $conf->opensurvey->dir_output.'/temp/massgeneration/'.$user->id; -$hookmanager->initHooks(array('surveylist')); // Note that conf->hooks_modules contains array -// Fetch optionals attributes and labels -$extrafields->fetch_name_optionals_label($object->table_element); -$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); - -// Default sort order (if not yet defined by previous GETPOST) -if (!$sortfield) { - $sortfield = "p.date_fin"; -} -if (!$sortorder) { - $sortorder = "DESC"; -} - -// Security check -if (!$user->rights->opensurvey->read) { - accessforbidden(); -} - -// Definition of fields for list -$arrayfields = array(); -foreach ($arrayfields as $key => $val) { - // If $val['visible']==0, then we never show the field - if (!empty($val['visible'])) { - $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); - } -} -// Extra fields -if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { - if (!empty($extrafields->attributes[$object->table_element]['list'][$key])) { - $arrayfields["ef.".$key] = array( - 'label'=>$extrafields->attributes[$object->table_element]['label'][$key], - 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), - 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], - 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]) - ); - } - } -} -$object->fields = dol_sort_array($object->fields, 'position'); -$arrayfields = dol_sort_array($arrayfields, 'position'); - -$permissiontoread = $user->rights->opensurvey->read; -$permissiontoadd = $user->rights->opensurvey->write; -// permission delete doesn't exists -$permissiontodelete = $user->rights->opensurvey->write; - - -/* - * Actions - */ - -if (GETPOST('cancel', 'alpha')) { - $action = 'list'; $massaction = ''; -} -if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { - $massaction = ''; -} - -$parameters = array(); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks -if ($reshook < 0) { - setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -} - -if (empty($reshook)) { - // Selection of new fields - include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; - - // Purge search criteria - if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers - $search_status = ''; - $search_title = ''; - $search_ref = ''; - $toselect = array(); - $search_array_options = array(); - } - if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha') - || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) { - $massaction = ''; // Protection to avoid mass action if we force a new search during a mass action confirmation - } - - // Mass actions - $objectclass = 'Opensurveysondage'; - $objectlabel = 'Opensurveysondage'; - $uploaddir = $conf->opensurvey->dir_output; - include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; -} - - -/* - * View - */ - -$form = new Form($db); - -$now = dol_now(); - -//$help_url="EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject"; -$help_url = ''; -$title = $langs->trans('OpenSurveyArea'); - - -$sql = "SELECT p.id_sondage as rowid, p.fk_user_creat, p.format, p.date_fin, p.status, p.titre as title, p.nom_admin, p.tms,"; -$sql .= " u.login, u.firstname, u.lastname"; -$sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as p"; -$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user u ON u.rowid = p.fk_user_creat"; -$sql .= " WHERE p.entity IN (".getEntity('survey').")"; -if ($search_status != '-1' && $search_status != '') { - $sql .= natural_search("p.status", $search_status, 2); -} -if (!empty($search_expired) && $search_expired == 'expired') { - $sql .= " AND p.date_fin < '".$db->idate($now)."'"; -} -if (!empty($search_expired) && $search_expired == 'opened') { - $sql .= " AND p.date_fin >= '".$db->idate($now)."'"; -} -if (!empty($search_ref)) { - $sql .= natural_search("p.id_sondage", $search_ref); -} -if (!empty($search_title)) { - $sql .= natural_search("p.titre", $search_title); -} -// Add where from extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; -// Add where from hooks -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook -$sql .= $hookmanager->resPrint; - -$sql .= $db->order($sortfield, $sortorder); - -// Count total nb of records -$nbtotalofrecords = ''; -if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $resql = $db->query($sql); - $nbtotalofrecords = $db->num_rows($resql); - if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0 - $page = 0; - $offset = 0; - } -} -// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set. -if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) { - $num = $nbtotalofrecords; -} else { - $sql .= $db->plimit($limit + 1, $offset); - - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - exit; - } - - $num = $db->num_rows($resql); -} - -// Direct jump if only one record found -if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all) { - $obj = $db->fetch_object($resql); - $id = $obj->rowid; - header("Location: ".dol_buildpath('/opensurvey/card.php', 1).'?id='.$id); - exit; -} - - -// Output page -// -------------------------------------------------------------------- - -llxHeader('', $title, $help_url); - -$arrayofselected = is_array($toselect) ? $toselect : array(); - -$param = ''; -if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { - $param .= '&contextpage='.urlencode($contextpage); -} -if ($limit > 0 && $limit != $conf->liste_limit) { - $param .= '&limit='.urlencode($limit); -} -$fieldtosortuser = empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION) ? 'firstname' : 'lastname'; - -if ($optioncss != '') { - $param .= '&optioncss='.urlencode($optioncss); -} -// Add $param from extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; - -// List of mass actions available -$arrayofmassactions = array( - //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), - //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), -); -if ($permissiontodelete) { - $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); -} -if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) { - $arrayofmassactions = array(); -} -$massactionbutton = $form->selectMassAction('', $arrayofmassactions); - - -// List of surveys into database - -print '
    '; -if ($optioncss != '') { - print ''; -} -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; - -$newcardbutton = dolGetButtonTitle($langs->trans('NewSurvey'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/opensurvey/wizard/index.php', '', $user->rights->opensurvey->write); - -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'poll', 0, $newcardbutton, '', $limit, 0, 0, 1); - -// Add code for pre mass action (confirmation or email presend form) -$topicmail = "SendOpenSurveyRef"; -$modelmail = "opensurvey"; -$objecttmp = new Opensurveysondage($db); -$trackid = 'surv'.$object->id; -include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; - -if ($sall) { - foreach ($fieldstosearchall as $key => $val) { - $fieldstosearchall[$key] = $langs->trans($val); - } - print '
    '.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'
    '; -} - -$moreforfilter = ''; -/*$moreforfilter.='
    '; -$moreforfilter.= $langs->trans('MyFilter') . ': '; -$moreforfilter.= '
    ';*/ - -$parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook -if (empty($reshook)) { - $moreforfilter .= $hookmanager->resPrint; -} else { - $moreforfilter = $hookmanager->resPrint; -} - -if (!empty($moreforfilter)) { - print '
    '; - print $moreforfilter; - print '
    '; -} - -$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -//$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields -$selectedfields = ''; -$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); - -print '
    '; -print ''."\n"; - -// Fields title search -// -------------------------------------------------------------------- -print ''; -// Action column -if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; -} -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -$arraystatus = array('-1'=>' ', '0'=>$langs->trans("Draft"), '1'=>$langs->trans("Opened"), '2'=>$langs->trans("Closed")); -print ''; -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; - -// Fields from hook -$parameters = array('arrayfields'=>$arrayfields); -$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; -// Action column -if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; -} -print ''."\n"; - - -// Fields title label -// -------------------------------------------------------------------- -print ''; -// Action column -if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n"; -} -print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "p.id_sondage", $param, "", "", $sortfield, $sortorder); -print_liste_field_titre("Title", $_SERVER["PHP_SELF"], "p.titre", $param, "", "", $sortfield, $sortorder); -print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "p.format", $param, "", "", $sortfield, $sortorder); -print_liste_field_titre("Author", $_SERVER["PHP_SELF"], "u.".$fieldtosortuser, $param, "", "", $sortfield, $sortorder); -print_liste_field_titre("NbOfVoters", $_SERVER["PHP_SELF"], "", $param, "", 'align="right"', $sortfield, $sortorder); -print_liste_field_titre("ExpireDate", $_SERVER["PHP_SELF"], "p.date_fin", $param, "", 'align="center"', $sortfield, $sortorder); -print_liste_field_titre("DateLastModification", $_SERVER["PHP_SELF"], "p.tms", $param, "", 'align="center"', $sortfield, $sortorder); -print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "p.status", $param, "", 'align="center"', $sortfield, $sortorder); -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; -// Hook fields -$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); -$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; -// Action column -if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch ')."\n"; -} -print ''."\n"; - - - -// Loop on record -// -------------------------------------------------------------------- -$i = 0; -$totalarray = array(); -$totalarray['nbfield'] = 0; -while ($i < min($num, $limit)) { - $obj = $db->fetch_object($resql); - if (empty($obj)) { - break; // Should not happen - } - - $sql2 = 'select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->rowid)."'"; - $resql2 = $db->query($sql2); - if ($resql2) { - $obj2 = $db->fetch_object($resql2); - $nbuser = $obj2->nb; - } else { - dol_print_error($db); - } - - $opensurvey_static->id = $obj->rowid; - $opensurvey_static->ref = $obj->rowid; - $opensurvey_static->title = $obj->title; - $opensurvey_static->status = $obj->status; - $opensurvey_static->date_fin = $db->jdate($obj->date_fin); - - // Show here line of result - print ''; - // Action column - if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; - } - // Ref - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - // Title - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - // Type - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - // Nb of voters - print''."\n"; - if (!$i) { - $totalarray['nbfield']++; - } - - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - - print ''."\n"; - if (!$i) { - $totalarray['nbfield']++; - } - - // Extra fields - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; - // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); - $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - // Action column - if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { - print ''; - } - if (!$i) { - $totalarray['nbfield']++; - } - - print ''."\n"; - $i++; -} - -// Show total line -include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; - - -// If no record found -if ($num == 0) { - $colspan = 8; - foreach ($arrayfields as $key => $val) { - if (!empty($val['checked'])) { - $colspan++; - } - } - print ''; -} - - -$db->free($resql); - -$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook -print $hookmanager->resPrint; - -print '
    '; - $searchpicto = $form->showFilterButtons('left'); - print $searchpicto; - print ''.$form->selectarray('search_status', $arraystatus, $search_status, 0, 0, 0, '', 0, 0, 0, '', 'onroghtofpage').''; - $searchpicto = $form->showFilterButtons(); - print $searchpicto; - print '
    '; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; - } - print ''; - } - print ''; - print $opensurvey_static->getNomUrl(1); - print ''.dol_htmlentities($obj->title).''; - $type = ($obj->format == 'A') ? 'classic' : 'date'; - print img_picto('', dol_buildpath('/opensurvey/img/'.($type == 'classic' ? 'chart-32.png' : 'calendar-32.png'), 1), 'width="16"', 1); - print ' '.$langs->trans($type == 'classic' ? "TypeClassic" : "TypeDate"); - print ''; - // Author - if ($obj->fk_user_creat) { - $userstatic = new User($db); - $userstatic->id = $obj->fk_user_creat; - $userstatic->firstname = $obj->firstname; - $userstatic->lastname = $obj->lastname; - $userstatic->login = $userstatic->getFullName($langs, 0, -1, 48); - - print $userstatic->getLoginUrl(1); - } else { - print dol_htmlentities($obj->nom_admin); - } - print ''.$nbuser.''.dol_print_date($db->jdate($obj->date_fin), 'day'); - if ($db->jdate($obj->date_fin) < $now && $obj->status == Opensurveysondage::STATUS_VALIDATED) { - print img_warning($langs->trans("Expired")); - } - print ''.dol_print_date($db->jdate($obj->tms), 'dayhour'); - print ''.$opensurvey_static->getLibStatut(5).''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; - } - print ''; - } - print '
    '.$langs->trans("NoRecordFound").'
    '."\n"; -print '
    '."\n"; - -print '
    '."\n"; - -if (in_array('builddoc', $arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords)) { - $hidegeneratedfilelistifempty = 1; - if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) { - $hidegeneratedfilelistifempty = 0; - } - - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; - $formfile = new FormFile($db); - - // Show list of available documents - $urlsource = $_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; - $urlsource .= str_replace('&', '&', $param); - - $filedir = $diroutputmassaction; - $genallowed = $permissiontoread; - $delallowed = $permissiontoadd; - - print $formfile->showdocuments('massfilesarea_mymodule', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty); -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php deleted file mode 100644 index d8405c31..00000000 --- a/htdocs/opensurvey/results.php +++ /dev/null @@ -1,1170 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/results.php - * \ingroup opensurvey - * \brief Page to preview votes of a survey - */ - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php"; - -// Security check -if (empty($user->rights->opensurvey->read)) { - accessforbidden(); -} - -// Init vars -$action = GETPOST('action', 'aZ09'); -$numsondage = GETPOST("id"); - -$object = new Opensurveysondage($db); -$result = $object->fetch(0, $numsondage); -if ($result <= 0) { - dol_print_error('', 'Failed to get survey id '.$numsondage); -} - -$nblines = $object->fetch_lines(); - - -/* - * Actions - */ - -// Return to the results -if (GETPOST('retoursondage')) { - header('Location: results.php?id='.(GETPOSTISSET('id_sondage') ? GETPOST('id_sondage', 'aZ09') : GETPOST('id', 'int'))); - exit; -} - -$nbcolonnes = substr_count($object->sujet, ',') + 1; - -// Add vote -if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) { // boutonp for chrome, boutonp.x for firefox - if (GETPOST('nom')) { - $erreur_prenom = false; - - $nouveauchoix = ''; - for ($i = 0; $i < $nbcolonnes; $i++) { - if (GETPOSTISSET("choix$i") && GETPOST("choix$i") == '1') { - $nouveauchoix .= "1"; - } elseif (GETPOSTISSET("choix$i") && GETPOST("choix$i") == '2') { - $nouveauchoix .= "2"; - } else { // sinon c'est 0 - $nouveauchoix .= "0"; - } - } - - $nom = substr(GETPOST("nom", 'alphanohtml'), 0, 64); - - // Check if vote already exists - $sql = 'SELECT id_users, nom as name'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'opensurvey_user_studs'; - $sql .= " WHERE id_sondage='".$db->escape($numsondage)."' AND nom = '".$db->escape($nom)."'"; - $sql .= ' ORDER BY id_users'; - $resql = $db->query($sql); - $num_rows = $db->num_rows($resql); - if ($num_rows > 0) { - setEventMessages($langs->trans("VoteNameAlreadyExists"), null, 'errors'); - $error++; - } else { - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'opensurvey_user_studs (nom, id_sondage, reponses)'; - $sql .= " VALUES ('".$db->escape($nom)."', '".$db->escape($numsondage)."','".$db->escape($nouveauchoix)."')"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - } - } -} - -// Update vote -$testmodifier = false; -$testligneamodifier = false; -$ligneamodifier = -1; -for ($i = 0; $i < $nblines; $i++) { - if (GETPOSTISSET('modifierligne'.$i)) { - $ligneamodifier = $i; - $testligneamodifier = true; - } - - //test pour voir si une ligne est a modifier - if (GETPOSTISSET('validermodifier'.$i)) { - $modifier = $i; - $testmodifier = true; - } -} -if ($testmodifier) { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $nouveauchoix = ''; - for ($i = 0; $i < $nbcolonnes; $i++) { - if (GETPOSTISSET("choix$i") && GETPOST("choix$i") == '1') { - $nouveauchoix .= "1"; - } elseif (GETPOSTISSET("choix$i") && GETPOST("choix$i") == '2') { - $nouveauchoix .= "2"; - } else { // sinon c'est 0 - $nouveauchoix .= "0"; - } - } - - $idtomodify = GETPOST("idtomodify".$modifier); - $sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_user_studs"; - $sql .= " SET reponses = '".$db->escape($nouveauchoix)."'"; - $sql .= " WHERE id_users = '".$db->escape($idtomodify)."'"; - - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } -} - -// Add column (not for date) -if (GETPOST("ajoutercolonne") && GETPOST('nouvellecolonne') && $object->format == "A") { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $nouveauxsujets = $object->sujet; - - //on rajoute la valeur a la fin de tous les sujets deja entrés - $nouveauxsujets .= ','; - $nouveauxsujets .= str_replace(array(",", "@"), " ", GETPOST("nouvellecolonne")).(!GETPOST("typecolonne") ? '' : '@'.GETPOST("typecolonne")); - - //mise a jour avec les nouveaux sujets dans la base - $sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_sondage"; - $sql .= " SET sujet = '".$db->escape($nouveauxsujets)."'"; - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } else { - header('Location: results.php?id='.$object->id_sondage); - } -} - -// Add column (with format date) -if (GETPOSTISSET("ajoutercolonne") && $object->format == "D") { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $nouveauxsujets = $object->sujet; - - if (GETPOSTISSET("nouveaujour") && GETPOST("nouveaujour") != "vide" && - GETPOSTISSET("nouveaumois") && GETPOST("nouveaumois") != "vide" && - GETPOSTISSET("nouvelleannee") && GETPOST("nouvelleannee") != "vide") { - $nouvelledate = dol_mktime(0, 0, 0, GETPOST("nouveaumois"), GETPOST("nouveaujour"), GETPOST("nouvelleannee")); - - if (GETPOSTISSET("nouvelleheuredebut") && GETPOST("nouvelleheuredebut") != "vide") { - $nouvelledate .= "@"; - $nouvelledate .= GETPOST("nouvelleheuredebut"); - $nouvelledate .= "h"; - - if (GETPOST("nouvelleminutedebut") != "vide") { - $nouvelledate .= GETPOST("nouvelleminutedebut"); - } - } - - if (GETPOSTISSET("nouvelleheurefin") && GETPOST("nouvelleheurefin") != "vide") { - $nouvelledate .= "-"; - $nouvelledate .= GETPOST("nouvelleheurefin"); - $nouvelledate .= "h"; - - if (GETPOST("nouvelleminutefin") != "vide") { - $nouvelledate .= GETPOST("nouvelleminutefin"); - } - } - - if (GETPOST("nouvelleheuredebut") == "vide" || (GETPOSTISSET("nouvelleheuredebut") && GETPOSTISSET("nouvelleheurefin") - && (GETPOST("nouvelleheuredebut") < GETPOST("nouvelleheurefin") || (GETPOST("nouvelleheuredebut") == GETPOST("nouvelleheurefin") - && (GETPOST("nouvelleminutedebut") < GETPOST("nouvelleminutefin")))))) { - $erreur_ajout_date = false; - } else { - $erreur_ajout_date = "yes"; - } - - //on rajoute la valeur dans les valeurs - $datesbase = explode(",", $object->sujet); - $taillebase = count($datesbase); - - //recherche de l'endroit de l'insertion de la nouvelle date dans les dates deja entrées dans le tableau - if ($nouvelledate < $datesbase[0]) { - $cleinsertion = 0; - } elseif ($nouvelledate > $datesbase[$taillebase - 1]) { - $cleinsertion = count($datesbase); - } else { - $nbdatesbase = count($datesbase); - for ($i = 0; $i < $nbdatesbase; $i++) { - $j = $i + 1; - if ($nouvelledate > $datesbase[$i] && $nouvelledate < $datesbase[$j]) { - $cleinsertion = $j; - } - } - } - - array_splice($datesbase, $cleinsertion, 0, $nouvelledate); - $cle = array_search($nouvelledate, $datesbase); - $dateinsertion = ''; - $nbofdates = count($datesbase); - for ($i = 0; $i < $nbofdates; $i++) { - $dateinsertion .= ","; - $dateinsertion .= $datesbase[$i]; - } - - $dateinsertion = substr("$dateinsertion", 1); - - // update with new topics into database - if (isset($erreur_ajout_date) && empty($erreur_ajout_date)) { - $sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_sondage"; - $sql .= " SET sujet = '".$db->escape($dateinsertion)."'"; - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } else { - header('Location: results.php?id='.$object->id_sondage); - } - } - if ($cleinsertion >= 0) { - $sql = 'SELECT s.reponses'; - $sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_user_studs as s"; - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } else { - $num = $db->num_rows($resql); - $compteur = 0; - while ($compteur < $num) { - $obj = $db->fetch_object($resql); - $sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_user_studs"; - if ($cleinsertion == 0) { - $sql .= " SET reponses = '0".$db->escape($obj->reponses)."'"; - } else { - $reponsesadd = str_split($obj->reponses); - $lengthresponses = count($reponsesadd); - for ($cpt = $lengthresponses; $cpt > $cleinsertion; $cpt--) { - $reponsesadd[$cpt] = $reponsesadd[$cpt-1]; - } - $reponsesadd[$cleinsertion] = '0'; - $reponsesadd = implode($reponsesadd); - $sql .= " SET reponses = '".$db->escape($reponsesadd)."'"; - } - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - $compteur++; - } - } - } - $adresseadmin = $object->mail_admin; - } else { - $erreur_ajout_date = "yes"; - } -} - -// Delete line -for ($i = 0; $i < $nblines; $i++) { - if (GETPOST("effaceligne".$i) || GETPOST("effaceligne".$i."_x") || GETPOST("effaceligne".$i.".x")) { // effacelignei for chrome, effacelignei_x for firefox - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $compteur = 0; - - // Loop on each answer - $compteur = 0; - $sql = "SELECT id_users, nom as name, id_sondage, reponses"; - $sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - $num = $db->num_rows($resql); - while ($compteur < $num) { - $obj = $db->fetch_object($resql); - - if ($compteur == $i) { - $sql2 = 'DELETE FROM '.MAIN_DB_PREFIX.'opensurvey_user_studs'; - $sql2 .= " WHERE id_users = ".((int) $obj->id_users); - $resql2 = $db->query($sql2); - } - - $compteur++; - } - } -} - -// Delete column -for ($i = 0; $i < $nbcolonnes; $i++) { - if ((GETPOST("effacecolonne".$i) || GETPOST("effacecolonne".$i."_x") || GETPOST("effacecolonne".$i.".x")) - && $nbcolonnes > 1) { // effacecolonnei for chrome, effacecolonnei_x for firefox - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - $db->begin(); - - $toutsujet = explode(",", $object->sujet); - $j = 0; - $nouveauxsujets = ''; - - //parcours de tous les sujets actuels - while (isset($toutsujet[$j])) { - //si le sujet n'est pas celui qui a été effacé alors on concatene - if ($i != $j) { - if (!empty($nouveauxsujets)) { - $nouveauxsujets .= ','; - } - $nouveauxsujets .= $toutsujet[$j]; - } - - $j++; - } - - // Mise a jour des sujets dans la base - $sql = 'UPDATE '.MAIN_DB_PREFIX."opensurvey_sondage"; - $sql .= " SET sujet = '".$db->escape($nouveauxsujets)."' WHERE id_sondage = '".$db->escape($numsondage)."'"; - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - - // Clean current answer to remove deleted columns - $compteur = 0; - $sql = "SELECT id_users, nom as name, id_sondage, reponses"; - $sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; - $sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; - dol_syslog('sql='.$sql); - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - exit; - } - $num = $db->num_rows($resql); - while ($compteur < $num) { - $obj = $db->fetch_object($resql); - - $newcar = ''; - $ensemblereponses = $obj->reponses; - - // parcours de toutes les réponses actuelles - for ($j = 0; $j < $nbcolonnes; $j++) { - $car = substr($ensemblereponses, $j, 1); - //si les reponses ne concerne pas la colonne effacée, on concatene - if ($i != $j) { - $newcar .= $car; - } - } - - // mise a jour des reponses utilisateurs dans la base - $sql2 = 'UPDATE '.MAIN_DB_PREFIX.'opensurvey_user_studs'; - $sql2 .= " SET reponses = '".$db->escape($newcar)."'"; - $sql2 .= " WHERE id_users = '".$db->escape($obj->id_users)."'"; - //print $sql2; - dol_syslog('sql='.$sql2); - $resql2 = $db->query($sql2); - - $compteur++; - } - - $db->commit(); - } -} - - - -/* - * View - */ - -$form = new Form($db); - -if ($object->fk_user_creat) { - $userstatic = new User($db); - $userstatic->fetch($object->fk_user_creat); -} - -$result = $object->fetch(0, $numsondage); -if ($result <= 0) { - dol_print_error($db, $object->error); - exit; -} - -$title = $object->title." - ".$langs->trans('Card'); -$helpurl = ''; -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $title, $helpurl, 0, 0, 0, $arrayofjs, $arrayofcss); - - -// Define format of choices -$toutsujet = explode(",", $object->sujet); -$listofanswers = array(); -foreach ($toutsujet as $value) { - $tmp = explode('@', $value); - $listofanswers[] = array('label'=>$tmp[0], 'format'=>(!empty($tmp[1]) ? $tmp[1] : 'checkbox')); -} -$toutsujet = str_replace("@", "
    ", $toutsujet); -$toutsujet = str_replace("°", "'", $toutsujet); - - -print '
    '."\n"; -print ''; - -$head = opensurvey_prepare_head($object); - -print dol_get_fiche_head($head, 'preview', $langs->trans("Survey"), -1, 'poll'); - -$morehtmlref = ''; - -$linkback = ''.$langs->trans("BackToList").''; - -dol_banner_tab($object, 'id', $linkback, 1, 'id_sondage', 'id_sondage', $morehtmlref); - - -print '
    '; - -print '
    '; -print '
    '; -print ''; - -// Type -$type = ($object->format == "A") ? 'classic' : 'date'; -print ''; - -// Title -print ''; - -// Description -print ''; - -// EMail -//If linked user, then emails are going to be sent to users' email -if (!$object->fk_user_creat) { - print ''; -} - -print '
    '.$langs->trans("Type").''; -print img_picto('', dol_buildpath('/opensurvey/img/'.($type == 'classic' ? 'chart-32.png' : 'calendar-32.png'), 1), 'width="16"', 1); -print ' '.$langs->trans($type == 'classic' ? "TypeClassic" : "TypeDate").'
    '; -$adresseadmin = $object->mail_admin; -print $langs->trans("Title").''; -if ($action == 'edit') { - print ''; -} else { - print dol_htmlentities($object->title); -} -print '
    '.$langs->trans("Description").''; -if ($action == 'edit') { - $doleditor = new DolEditor('nouveauxcommentaires', $object->description, '', 120, 'dolibarr_notes', 'In', 1, 1, 1, ROWS_7, '90%'); - $doleditor->Create(0, ''); -} else { - print (dol_textishtml($object->description) ? $object->description : dol_nl2br($object->description, 1, true)); -} -print '
    '.$langs->trans("EMail").''; - if ($action == 'edit') { - print ''; - } else { - print dol_print_email($object->mail_admin, 0, 0, 1, 0, 1, 1); - } - print '
    '; - -print '
    '; -print '
    '; -print '
    '; - -print ''; - - -// Expire date -print ''; - -// Author -print ''; - -// Link -print ''; - -print '
    '.$langs->trans('ExpireDate').''; -if ($action == 'edit') { - print $form->selectDate($expiredate ? $expiredate : $object->date_fin, 'expire', 0, 0, 0, '', 1, 0); -} else { - print dol_print_date($object->date_fin, 'day'); - if ($object->date_fin && $object->date_fin < dol_now() && $object->status == Opensurveysondage::STATUS_VALIDATED) { - print img_warning($langs->trans("Expired")); - } -} -print '
    '; -print $langs->trans("Author").''; -if ($object->fk_user_creat) { - print $userstatic->getLoginUrl(1); -} else { - print dol_htmlentities($object->nom_admin); -} -print '
    '.$langs->trans("UrlForSurvey", '').''; - -// Define $urlwithroot -$urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); -$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file -//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current - -$url = $urlwithouturlroot.dol_buildpath('/public/opensurvey/studs.php', 1).'?sondage='.$object->id_sondage; -$urllink = ''; -print $urllink; -if ($action != 'edit') { - print ajax_autoselect("opensurveyurl", $url, 'image'); -} - -print '
    '; -print '
    '; - -print '
    '; -print '
    '; - -print dol_get_fiche_end(); - -print '
    '."\n"; - - -// Buttons - -print ''; - - -// Show form to add a new field/column -if (GETPOST('ajoutsujet')) { - // Security check - if (!$user->rights->opensurvey->write) { - accessforbidden(); - } - - print '
    '."\n"; - print ''; - print ''; - - print '
    '."\n"; - print "

    \n"; - - // Add new column - if ($object->format == "A") { - print $langs->trans("AddNewColumn").':

    '; - print $langs->trans("Title").'
    '; - $tmparray = array('checkbox'=>$langs->trans("CheckBox"), 'yesno'=>$langs->trans("YesNoList"), 'foragainst'=>$langs->trans("PourContreList")); - print $langs->trans("Type").' '.$form->selectarray("typecolonne", $tmparray, GETPOST('typecolonne')).'

    '; - print ''; - print ''; - print '     '; - print ''; - print '

    '."\n"; - } else { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; - - $formother = new FormOther($db); - //ajout d'une date avec creneau horaire - print $langs->trans("AddADate").':

    '."\n"; - print ''."\n"; - - print $formother->select_month('', 'nouveaumois', 1); - - print ' '; - - print $formother->selectyear('', 'nouvelleannee', 1, 0, 5, 0, 1); - - print '

    '.$langs->trans("AddStartHour").':

    '."\n"; - print ''."\n"; - print ''."\n"; - print '

    '.$langs->trans("AddEndHour").':

    '."\n"; - print ''."\n"; - print ''."\n"; - - print '

    '; - print' '."\n"; - print '   '; - print ''; - } - - print ''."\n"; - print '



    '."\n"; - print '
    '."\n"; - - exit; -} - -if ($user->rights->opensurvey->write) { - print ''; - $s = $langs->trans("PollAdminDesc", '{s1}', $langs->trans("Add")); - print str_replace('{s1}', img_picto('', 'delete'), $s); - print '
    '; -} - -$nbcolonnes = substr_count($object->sujet, ',') + 1; - -print '
    '."\n"; -print ''; -print ''; - -print '
    '."\n"; - -// Start to show survey result -print ''."\n"; - -//reformatage des données des sujets du sondage -$toutsujet = explode(",", $object->sujet); -$toutsujet = str_replace("°", "'", $toutsujet); - -print ''."\n"; -print ''."\n"; -print ''."\n"; - -// loop to show the delete link -if ($user->rights->opensurvey->write) { - for ($i = 0; isset($toutsujet[$i]); $i++) { - print ''."\n"; - } -} - -print ''."\n"; - - -// Show choice titles -if ($object->format == "D") { - //affichage des sujets du sondage - print ''."\n"; - print ''."\n"; - print ''."\n"; - - //affichage des années - $colspan = 1; - $nbofsujet = count($toutsujet); - for ($i = 0; $i < $nbofsujet; $i++) { - if (isset($toutsujet[$i + 1]) && date('Y', intval($toutsujet[$i])) == date('Y', intval($toutsujet[$i + 1]))) { - $colspan++; - } else { - print ''."\n"; - $colspan = 1; - } - } - - if ($user->rights->opensurvey->write) { - print ''."\n"; - } - - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - - //affichage des mois - $colspan = 1; - for ($i = 0; $i < $nbofsujet; $i++) { - $cur = intval($toutsujet[$i]); // intval() est utiliser pour supprimer le suffixe @* qui déplaît logiquement à strftime() - - if (isset($toutsujet[$i + 1]) === false) { - $next = false; - } else { - $next = intval($toutsujet[$i + 1]); - } - - if ($next && dol_print_date($cur, "%B") == dol_print_date($next, "%B") && dol_print_date($cur, "%Y") == dol_print_date($next, "%Y")) { - $colspan++; - } else { - print ''."\n"; - - $colspan = 1; - } - } - - if ($user->rights->opensurvey->write) { - print ''."\n"; - } - - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - - //affichage des jours - $colspan = 1; - for ($i = 0; $i < $nbofsujet; $i++) { - $cur = intval($toutsujet[$i]); - if (isset($toutsujet[$i + 1]) === false) { - $next = false; - } else { - $next = intval($toutsujet[$i + 1]); - } - if ($next && dol_print_date($cur, "%a %e") == dol_print_date($next, "%a %e") && dol_print_date($cur, "%B") == dol_print_date($next, "%B")) { - $colspan++; - } else { - print ''."\n"; - - $colspan = 1; - } - } - - if ($user->rights->opensurvey->write) { - print ''."\n"; - } - print ''."\n"; - - //affichage des horaires - if (strpos($object->sujet, '@') !== false) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - - for ($i = 0; isset($toutsujet[$i]); $i++) { - $heures = explode('@', $toutsujet[$i]); - if (isset($heures[1])) { - print ''."\n"; - } else { - print ''."\n"; - } - } - - if ($user->rights->opensurvey->write) { - print ''."\n"; - } - - print ''."\n"; - } -} else { - // Show titles - print ''."\n"; - print ''."\n"; - print ''."\n"; - - for ($i = 0; isset($toutsujet[$i]); $i++) { - $tmp = explode('@', $toutsujet[$i]); - print ''."\n"; - } - - print ''."\n"; - print ''."\n"; -} - - -// Loop on each answer -$sumfor = array(); -$sumagainst = array(); -$compteur = 0; -$sql = "SELECT id_users, nom as name, id_sondage, reponses"; -$sql .= " FROM ".MAIN_DB_PREFIX."opensurvey_user_studs"; -$sql .= " WHERE id_sondage = '".$db->escape($numsondage)."'"; -dol_syslog('sql='.$sql); -$resql = $db->query($sql); -if (!$resql) { - dol_print_error($db); - exit; -} -$num = $db->num_rows($resql); -while ($compteur < $num) { - $obj = $db->fetch_object($resql); - - $ensemblereponses = $obj->reponses; - - print ''."\n"; - - // si la ligne n'est pas a changer, on affiche les données - if (!$testligneamodifier) { - for ($i = 0; $i < $nbcolonnes; $i++) { - $car = substr($ensemblereponses, $i, 1); - //print 'xx'.$i."-".$car.'-'.$listofanswers[$i]['format'].'zz'; - - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - if (((string) $car) == "1") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - if (((string) $car) == "1") { - print ''."\n"; - } elseif (((string) $car) == "0") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (!isset($sumagainst[$i])) { - $sumagainst[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - if (((string) $car) == "0") { - $sumagainst[$i]++; - } - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') { - if (((string) $car) == "1") { - print ''."\n"; - } elseif (((string) $car) == "0") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (!isset($sumagainst[$i])) { - $sumagainst[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - if (((string) $car) == "0") { - $sumagainst[$i]++; - } - } - } - } else { - //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs - if ($compteur == $ligneamodifier) { - for ($i = 0; $i < $nbcolonnes; $i++) { - $car = substr($ensemblereponses, $i, 1); - print ''."\n"; - } - } else { - for ($i = 0; $i < $nbcolonnes; $i++) { - $car = substr($ensemblereponses, $i, 1); - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - if (((string) $car) == "1") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - if (((string) $car) == "1") { - print ''."\n"; - } elseif (((string) $car) == "0") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (!isset($sumagainst[$i])) { - $sumagainst[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - if (((string) $car) == "0") { - $sumagainst[$i]++; - } - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') { - if (((string) $car) == "1") { - print ''."\n"; - } elseif (((string) $car) == "0") { - print ''."\n"; - } else { - print ''."\n"; - } - // Total - if (!isset($sumfor[$i])) { - $sumfor[$i] = 0; - } - if (!isset($sumagainst[$i])) { - $sumagainst[$i] = 0; - } - if (((string) $car) == "1") { - $sumfor[$i]++; - } - if (((string) $car) == "0") { - $sumagainst[$i]++; - } - } - } - } - } - - // Button edit at end of line - if ($compteur != $ligneamodifier && ($user->rights->opensurvey->write)) { - print ''."\n"; - } - - //demande de confirmation pour modification de ligne - for ($i = 0; $i < $nblines; $i++) { - if (GETPOSTISSET("modifierligne".$i)) { - if ($compteur == $i) { - print ''."\n"; - } - } - } - - $compteur++; - print ''."\n"; -} - -// Add line to add new record -if (empty($testligneamodifier)) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - - for ($i = 0; $i < $nbcolonnes; $i++) { - print ''."\n"; - } - - // Affichage du bouton de formulaire pour inscrire un nouvel utilisateur dans la base - print ''."\n"; - print ''."\n"; -} - -// Select value of best choice (for checkbox columns only) -$nbofcheckbox = 0; -for ($i = 0; $i < $nbcolonnes + 1; $i++) { - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - $nbofcheckbox++; - } - if (isset($sumfor[$i])) { - if ($i == 0) { - $meilleurecolonne = $sumfor[$i]; - } - if (isset($sumfor[$i]) && $sumfor[$i] > $meilleurecolonne) { - $meilleurecolonne = $sumfor[$i]; - } - } -} - - -// Show line total -print ''."\n"; -print ''."\n"; -print ''."\n"; -for ($i = 0; $i < $nbcolonnes; $i++) { - $showsumfor = isset($sumfor[$i]) ? $sumfor[$i] : ''; - $showsumagainst = isset($sumagainst[$i]) ? $sumagainst[$i] : ''; - if (empty($showsumfor)) { - $showsumfor = 0; - } - if (empty($showsumagainst)) { - $showsumagainst = 0; - } - - print ''."\n"; -} -print ''; -// Show picto winner -if ($nbofcheckbox >= 2) { - print ''."\n"; - print ''."\n"; - print ''."\n"; - for ($i = 0; $i < $nbcolonnes; $i++) { - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst')) && isset($sumfor[$i]) && isset($meilleurecolonne) && $sumfor[$i] == $meilleurecolonne) { - print ''."\n"; - } else { - print ''."\n"; - } - } - print ''."\n"; -} - -// S'il a oublié de remplir un nom -if (GETPOSTISSET("boutonp") && GETPOST("nom") == "") { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Name")), null, 'errors'); -} - -if (isset($erreur_prenom) && $erreur_prenom) { - setEventMessages($langs->trans('VoteNameAlreadyExists'), null, 'errors'); -} - -if (isset($erreur_ajout_date) && $erreur_ajout_date) { - setEventMessages($langs->trans("ErrorWrongDate"), null, 'errors'); -} - -//fin du tableau -print '
    '.date('Y', intval($toutsujet[$i])).''; - print 'id_sondage.'">'.$langs->trans("Add").'
    '.dol_print_date($cur, "%B").'id_sondage.'">'.$langs->trans("Add").'
    '.dol_print_date($cur, "%a %e").'id_sondage.'">'.$langs->trans("Add").'
    '.dol_htmlentities($heures[1]).'id_sondage.'">'.$langs->trans("Add").'
    '.dol_htmlentities($tmp[0]).'
    '."\n"; - - if ($user->rights->opensurvey->write) { - print ''."\n"; - } - - // Name - print ''.dol_htmlentities($obj->name).'OKKO'.$langs->trans("Yes").''.$langs->trans("No").' '.$langs->trans("For").''.$langs->trans("Against").' '; - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - print ''; - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - $arraychoice = array('2'=>' ', '0'=>$langs->trans("No"), '1'=>$langs->trans("Yes")); - print $form->selectarray("choix".$i, $arraychoice, $car); - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') { - $arraychoice = array('2'=>' ', '0'=>$langs->trans("Against"), '1'=>$langs->trans("For")); - print $form->selectarray("choix".$i, $arraychoice, $car); - } - print 'OKKO'.$langs->trans("For").''.$langs->trans("Against").' '.$langs->trans("For").''.$langs->trans("Against").' '; - print ''; - print ''; - print '
    '."\n"; - print ''."\n"; - print ''; - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - print ''; - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - $arraychoice = array('2'=>' ', '0'=>$langs->trans("No"), '1'=>$langs->trans("Yes")); - print $form->selectarray("choix".$i, $arraychoice); - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') { - $arraychoice = array('2'=>' ', '0'=>$langs->trans("Against"), '1'=>$langs->trans("For")); - print $form->selectarray("choix".$i, $arraychoice); - } - print '
    '.$langs->trans("Total").''; - if (empty($listofanswers[$i]['format']) || !in_array($listofanswers[$i]['format'], array('yesno', 'foragainst'))) { - print $showsumfor; - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'yesno') { - print $langs->trans("Yes").': '.$showsumfor.'
    '.$langs->trans("No").': '.$showsumagainst; - } - if (!empty($listofanswers[$i]['format']) && $listofanswers[$i]['format'] == 'foragainst') { - print $langs->trans("For").': '.$showsumfor.'
    '.$langs->trans("Against").': '.$showsumagainst; - } - print '
    '."\n"; -print '
    '."\n"; - - -$toutsujet = explode(",", $object->sujet); // With old versions, this field was not set - -$compteursujet = 0; -$meilleursujet = ''; -for ($i = 0; $i < $nbcolonnes; $i++) { - if (isset($sumfor[$i]) === true && isset($meilleurecolonne) === true && $sumfor[$i] == $meilleurecolonne) { - $meilleursujet .= ($meilleursujet ? ", " : ""); - - if ($object->format == "D") { - $meilleursujetexport = $toutsujet[$i]; - //var_dump($toutsujet); - if (strpos($toutsujet[$i], '@') !== false) { - $toutsujetdate = explode("@", $toutsujet[$i]); - $meilleursujet .= dol_print_date($toutsujetdate[0], 'daytext').($toutsujetdate[0] ? ' ('.dol_print_date($toutsujetdate[0], '%A').')' : '').' - '.$toutsujetdate[1]; - } else { - $meilleursujet .= dol_print_date((empty($toutsujet[$i]) ? 0 : $toutsujet[$i]), 'daytext').' ('.dol_print_date((empty($toutsujet[$i]) ? 0 : $toutsujet[$i]), '%A').')'; - } - } else { - $tmps = explode('@', $toutsujet[$i]); - $meilleursujet .= dol_htmlentities($tmps[0]); - } - - $compteursujet++; - } -} -$meilleursujet = substr($meilleursujet, 1); -$meilleursujet = str_replace("°", "'", $meilleursujet); - -// Show best choice -if ($nbofcheckbox >= 2) { - $vote_str = $langs->trans('votes'); - print '

    '."\n"; - - if (isset($meilleurecolonne) && $compteursujet == "1") { - print " ".$langs->trans('TheBestChoice').": ".$meilleursujet." ".$langs->trans("with")." ".$meilleurecolonne." ".$vote_str.".\n"; - } elseif (isset($meilleurecolonne)) { - print " ".$langs->trans('TheBestChoices').": ".$meilleursujet." ".$langs->trans("with")." ".$meilleurecolonne." ".$vote_str.".\n"; - } - print '


    '."\n"; -} - -print '
    '."\n"; - -print ''."\n"; - -llxFooter(); - -$db->close(); diff --git a/htdocs/opensurvey/wizard/choix_autre.php b/htdocs/opensurvey/wizard/choix_autre.php deleted file mode 100644 index bbc13d5d..00000000 --- a/htdocs/opensurvey/wizard/choix_autre.php +++ /dev/null @@ -1,162 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/wizard/choix_autre.php - * \ingroup opensurvey - * \brief Page to create a new survey (choice selection) - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php"; - -// Security check -if (!$user->rights->opensurvey->write) { - accessforbidden(); -} - - - -/* - * Action - */ - -$arrayofchoices = GETPOST('choix', 'array'); -$arrayoftypecolumn = GETPOST('typecolonne', 'array'); - -// Set session vars -if (isset($_SESSION["nbrecases"])) { - for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) { - if (isset($arrayofchoices[$i])) { - $_SESSION["choix".$i] = $arrayofchoices[$i]; - } - if (isset($arrayoftypecolumn[$i])) { - $_SESSION["typecolonne".$i] = $arrayoftypecolumn[$i]; - } - } -} else { //nombre de cases par défaut - $_SESSION["nbrecases"] = 5; -} - -if (GETPOST("ajoutcases") || GETPOST("ajoutcases_x")) { - $_SESSION["nbrecases"] = $_SESSION["nbrecases"] + 5; -} - -// Create survey into database -if (GETPOSTISSET("confirmecreation")) { - //recuperation des données de champs textes - $toutchoix = ''; - for ($i = 0; $i < $_SESSION["nbrecases"] + 1; $i++) { - if (!empty($arrayofchoices[$i])) { - $toutchoix .= ','; - $toutchoix .= str_replace(array(",", "@"), " ", $arrayofchoices[$i]).(empty($arrayoftypecolumn[$i]) ? '' : '@'.$arrayoftypecolumn[$i]); - } - } - - $toutchoix = substr("$toutchoix", 1); - $_SESSION["toutchoix"] = $toutchoix; - - //test de remplissage des cases - $testremplissage = ''; - for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) { - if (isset($arrayofchoices[$i])) { - $testremplissage = "ok"; - } - } - - //message d'erreur si aucun champ renseigné - if ($testremplissage != "ok" || (!$toutchoix)) { - setEventMessages($langs->trans("ErrorOpenSurveyOneChoice"), null, 'errors'); - } else { - //format du sondage AUTRE - $_SESSION["formatsondage"] = "A"; - - // Add into database - ajouter_sondage(); - } -} - -/* - * View - */ - -$form = new Form($db); - -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $langs->trans("OpenSurvey"), "", '', 0, 0, $arrayofjs, $arrayofcss); - -if (empty($_SESSION['title'])) { - dol_print_error('', $langs->trans('ErrorOpenSurveyFillFirstSection')); - llxFooter(); - exit; -} - - -//partie creation du sondage dans la base SQL -//On prépare les données pour les inserer dans la base - -print '
    '."\n"; -print ''; - -print load_fiche_titre($langs->trans("CreatePoll").' (2 / 2)'); - - -print '
    '.$langs->trans("PollOnChoice").'

    '."\n"; - -print '
    '."\n"; -print ''."\n"; - -//affichage des cases texte de formulaire -for ($i = 0; $i < $_SESSION["nbrecases"]; $i++) { - $j = $i + 1; - if (isset($_SESSION["choix$i"]) === false) { - $_SESSION["choix$i"] = ''; - } - print ''."\n"; -} - -print '
    '.$langs->trans("TitleChoice").' '.$j.': '; - $tmparray = array('checkbox'=>$langs->trans("CheckBox"), 'yesno'=>$langs->trans("YesNoList"), 'foragainst'=>$langs->trans("PourContreList")); - print '   '.$langs->trans("Type").' '.$form->selectarray("typecolonne[]", $tmparray, $_SESSION["typecolonne$i"]); - print '
    '."\n"; - -//ajout de cases supplementaires -print ''."\n"; -print ''."\n"; -print '
    '.$langs->trans("5MoreChoices").'
    '."\n"; -print'
    '."\n"; - -print ''."\n"; -print ''."\n"; -print '
    '."\n"; - -//fin du formulaire et bandeau de pied -print ''."\n"; - - -print ''."\n"; -print '


    '."\n"; -print '
    '."\n"; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/wizard/choix_date.php b/htdocs/opensurvey/wizard/choix_date.php deleted file mode 100644 index d8f89b18..00000000 --- a/htdocs/opensurvey/wizard/choix_date.php +++ /dev/null @@ -1,575 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/wizard/choix_date.php - * \ingroup opensurvey - * \brief Page to create a new survey (date selection) - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php"; - -// Security check -if (!$user->rights->opensurvey->write) { - accessforbidden(); -} - -// Survey type is DATE -$_SESSION["formatsondage"] = "D"; - -$erreur = false; -$erreurNbchoice = 0; - -/* - * Actions - */ - -// Insert survey -if (GETPOST('confirmation')) { - // We save hours entered - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('nbrecaseshoraires', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - $errheure = array(); - - if ($nbofchoice * $_SESSION["nbrecaseshoraires"] > 200) { - setEventMessages($langs->trans("ErrorFieldTooLong"), null, 'errors'); - $erreurNb++; - } else { - for ($i = 0; $i < $nbofchoice; $i++) { - // Show hours choices - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - - $tmphorairesi = GETPOST('horaires'.$i, 'array'); - - if (!is_array($tmphorairesi)) { - $errheure[$i][$j] = true; - $erreur = true; - continue; - } - - // A range like 8:00-11:00 - $creneaux = array(); - $heures = array(); - if (preg_match("/(\d{1,2}:\d{2})-(\d{1,2}:\d{2})/", $tmphorairesi[$j], $creneaux)) { - //on recupere les deux parties du preg_match qu'on redécoupe autour des ":" - $debutcreneau = explode(":", $creneaux[1]); - $fincreneau = explode(":", $creneaux[2]); - - //comparaison des heures de fin et de debut - //si correctes, on entre les données dans la variables de session - if ($debutcreneau[0] < 24 && $fincreneau[0] < 24 && $debutcreneau[1] < 60 && $fincreneau[1] < 60 && ($debutcreneau[0] < $fincreneau[0] || ($debutcreneau[0] == $fincreneau[0] && $debutcreneau[1] < $fincreneau[1]))) { - $_SESSION["horaires$i"][$j] = $creneaux[1].'-'.$creneaux[2]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif (preg_match(";^(\d{1,2}h\d{0,2})-(\d{1,2}h\d{0,2})$;i", $tmphorairesi[$j], $creneaux)) { //si c'est un creneau type 8h00-11h00 - //on recupere les deux parties du preg_match qu'on redécoupe autour des "H" - $debutcreneau = preg_split("/h/i", $creneaux[1]); - $fincreneau = preg_split("/h/i", $creneaux[2]); - - //comparaison des heures de fin et de debut - //si correctes, on entre les données dans la variables de session - if ($debutcreneau[0] < 24 && $fincreneau[0] < 24 && $debutcreneau[1] < 60 && $fincreneau[1] < 60 && ($debutcreneau[0] < $fincreneau[0] || ($debutcreneau[0] == $fincreneau[0] && $debutcreneau[1] < $fincreneau[1]))) { - $_SESSION["horaires$i"][$j] = $creneaux[1].'-'.$creneaux[2]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif (preg_match(";^(\d{1,2}):(\d{2})$;", $tmphorairesi[$j], $heures)) { //si c'est une heure simple type 8:00 - //si valeures correctes, on entre les données dans la variables de session - if ($heures[1] < 24 && $heures[2] < 60) { - $_SESSION["horaires$i"][$j] = $heures[0]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif (preg_match(";^(\d{1,2})h(\d{0,2})$;i", $tmphorairesi[$j], $heures)) { //si c'est une heure encore plus simple type 8h - //si valeures correctes, on entre les données dans la variables de session - if ($heures[1] < 24 && $heures[2] < 60) { - $_SESSION["horaires$i"][$j] = $heures[0]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif (preg_match(";^(\d{1,2})-(\d{1,2})$;", $tmphorairesi[$j], $heures)) { //si c'est un creneau simple type 8-11 - //si valeures correctes, on entre les données dans la variables de session - if ($heures[1] < $heures[2] && $heures[1] < 24 && $heures[2] < 24) { - $_SESSION["horaires$i"][$j] = $heures[0]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif (preg_match(";^(\d{1,2})h-(\d{1,2})h$;", $tmphorairesi[$j], $heures)) { //si c'est un creneau H type 8h-11h - //si valeures correctes, on entre les données dans la variables de session - if ($heures[1] < $heures[2] && $heures[1] < 24 && $heures[2] < 24) { - $_SESSION["horaires$i"][$j] = $heures[0]; - } else { //sinon message d'erreur et nettoyage de la case - $errheure[$i][$j] = true; - $erreur = true; - } - } elseif ($tmphorairesi[$j] == "") { //Si la case est vide - unset($_SESSION["horaires$i"][$j]); - } else { //pour tout autre format, message d'erreur - $errheure[$i][$j] = true; - $erreur = true; - } - - if (issetAndNoEmpty('horaires'.$i, $_SESSION) === false || issetAndNoEmpty($j, $_SESSION['horaires'.$i]) === false) { - if (issetAndNoEmpty('horaires'.$i, $_SESSION) === true) { - $_SESSION["horaires$i"][$j] = ''; - } else { - $_SESSION["horaires$i"] = array(); - $_SESSION["horaires$i"][$j] = ''; - } - } - } - - if ($_SESSION["horaires$i"][0] == "" && $_SESSION["horaires$i"][1] == "" && $_SESSION["horaires$i"][2] == "" && $_SESSION["horaires$i"][3] == "" && $_SESSION["horaires$i"][4] == "") { - $choixdate .= ","; - $choixdate .= $_SESSION["totalchoixjour"][$i]; - } else { - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - if ($_SESSION["horaires$i"][$j] != "") { - $choixdate .= ","; - $choixdate .= $_SESSION["totalchoixjour"][$i]; - $choixdate .= "@"; - // On remplace la virgule et l'arobase pour ne pas avoir de problème par la suite - $choixdate .= str_replace(array(',', '@'), array(',', '@'), $_SESSION["horaires$i"][$j]); - } - } - } - } - } - - - if (!empty($errheure)) { - setEventMessages($langs->trans("ErrorBadFormat"), null, 'errors'); - } - } - - //If just one day and no other time options, error message - $tmphoraires0 = GETPOST('horaires0', 'array'); - if (count($_SESSION["totalchoixjour"]) == "1" && $tmphoraires0[0] == "" && $tmphoraires0[1] == "" && $tmphoraires0[2] == "" && $tmphoraires0[3] == "" && $tmphoraires0[4] == "") { - setEventMessages($langs->trans("MoreChoices"), null, 'errors'); - $erreur = true; - } - - // Add survey into database - if (!$erreur && $erreurNb == 0) { - $_SESSION["toutchoix"] = substr("$choixdate", 1); - - ajouter_sondage(); - } -} - -// Reset days -if (GETPOST('reset')) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - unset($_SESSION["horaires$i"][$j]); - } - } - - unset($_SESSION["totalchoixjour"]); - unset($_SESSION["nbrecaseshoraires"]); -} - - - -/* - * View - */ - -if (!isset($_SESSION['description']) && !isset($_SESSION['mail'])) { - dol_print_error('', $langs->trans('ErrorOpenSurveyFillFirstSection')); - exit; -} - -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $langs->trans("OpenSurvey"), "", '', 0, 0, $arrayofjs, $arrayofcss); - -//nombre de cases par défaut -if (!isset($_SESSION["nbrecaseshoraires"])) { - $_SESSION["nbrecaseshoraires"] = 5; -} elseif (GETPOST('ajoutcases') && $_SESSION["nbrecaseshoraires"] == 5) { - $_SESSION["nbrecaseshoraires"] = 10; -} - -//valeurs de la date du jour actuel -$jourAJ = date("j"); -$moisAJ = date("n"); -$anneeAJ = date("Y"); - -// Initialisation des jour, mois et année -if (!isset($_SESSION['jour'])) { - $_SESSION['jour'] = date('j'); -} -if (!isset($_SESSION['mois'])) { - $_SESSION['mois'] = date('n'); -} -if (!isset($_SESSION['annee'])) { - $_SESSION['annee'] = date('Y'); -} - -//mise a jour des valeurs de session si bouton retour a aujourd'hui -if (!issetAndNoEmpty('choixjourajout') && !issetAndNoEmpty('choixjourretrait') && (issetAndNoEmpty('retourmois') || issetAndNoEmpty('retourmois_x'))) { - $_SESSION["jour"] = date("j"); - $_SESSION["mois"] = date("n"); - $_SESSION["annee"] = date("Y"); -} - -//mise a jour des valeurs de session si mois avant -if (issetAndNoEmpty('moisavant_x') || issetAndNoEmpty('moisavant')) { - if ($_SESSION["mois"] == 1) { - $_SESSION["mois"] = 12; - $_SESSION["annee"] = $_SESSION["annee"] - 1; - } else { - $_SESSION["mois"] -= 1; - } - - //On sauvegarde les heures deja entrées - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - //affichage des 5 cases horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } -} - -//mise a jour des valeurs de session si mois apres -if (issetAndNoEmpty('moisapres_x') || issetAndNoEmpty('moisapres')) { - if ($_SESSION["mois"] == 12) { - $_SESSION["mois"] = 1; - $_SESSION["annee"] += 1; - } else { - $_SESSION["mois"] += 1; - } - - //On sauvegarde les heures deja entrées - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - //affichage des 5 cases horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } -} - -//mise a jour des valeurs de session si annee avant -if (issetAndNoEmpty('anneeavant_x') || issetAndNoEmpty('anneeavant')) { - $_SESSION["annee"] -= 1; - - //On sauvegarde les heures deja entrées - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - //affichage des 5 cases horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } -} - -//mise a jour des valeurs de session si annee apres -if (issetAndNoEmpty('anneeapres_x') || issetAndNoEmpty('anneeapres')) { - $_SESSION["annee"] += 1; - - //On sauvegarde les heures deja entrées - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - //affichage des 5 cases horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } -} - -//valeurs du nombre de jour dans le mois et du premier jour du mois -$nbrejourmois = date("t", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"])); -$premierjourmois = date("N", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"])) - 1; - -//traduction de la valeur du mois -if (is_integer($_SESSION["mois"]) && $_SESSION["mois"] > 0 && $_SESSION["mois"] < 13) { - $motmois = dol_print_date(mktime(0, 0, 0, $_SESSION["mois"], 10), '%B'); -} else { - $motmois = dol_print_date(dol_now(), '%B'); -} - - -//Debut du formulaire et bandeaux de tete -print '
    '."\n"; -print ''; - -print load_fiche_titre($langs->trans("CreatePoll").' (2 / 2)'); - -//affichage de l'aide pour les jours -print '
    '."\n"; -print $langs->trans("OpenSurveyStep2")."\n"; -print '
    '."\n"; - -//debut du tableau qui affiche le calendrier -print '
    '."\n"; -print '
    '."\n"; -print ''."\n"; // The div class=center has no effect on table, so we must keep the align=center for table -print ''; -print ''; -print ''."\n"; -print '
    '.$motmois.' '.$_SESSION["annee"].'
    '; -print ''; -print '
    '; -print '
    '."\n"; -print '
    '."\n"; - -print '
    '."\n"; -print ''."\n"; // The div class=center has no effect on table, so we must keep the align=center for table -print ''."\n"; - -//affichage des jours de la semaine en haut du tableau -for ($i = 0; $i < 7; $i++) { - print ''; -} - -print ''."\n"; - -//ajout d'une entrée dans la variable de session qui contient toutes les dates -if (issetAndNoEmpty('choixjourajout')) { - if (!isset($_SESSION["totalchoixjour"])) { - $_SESSION["totalchoixjour"] = array(); - } - - // Test pour éviter les doublons dans la variable qui contient toutes les dates - $journeuf = true; - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('choixjourajout') === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - $choixjourajout = GETPOST("choixjourajout"); - if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"])) { - $journeuf = false; - } - } - } - - // Si le test est passé, alors on insere la valeur dans la variable de session qui contient les dates - if ($journeuf && issetAndNoEmpty('choixjourajout') === true) { - $choixjourajout = GETPOST("choixjourajout"); - array_push($_SESSION["totalchoixjour"], dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"])); - sort($_SESSION["totalchoixjour"]); - $cle = array_search(dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]); - - //On sauvegarde les heures deja entrées - for ($i = 0; $i < $cle; $i++) { - $horairesi = GETPOST("horaires".$i); - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) { - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } - - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = $cle; $i < $nbofchoice; $i++) { - $k = $i + 1; - if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) { - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - } - - unset($_SESSION["horaires$cle"]); - } -} - -//retrait d'une entrée dans la variable de session qui contient toutes les dates -if (issetAndNoEmpty('choixjourretrait')) { - //On sauvegarde les heures deja entrées - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - //affichage des 5 cases horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - $horairesi = GETPOST("horaires".$i); - $_SESSION["horaires$i"][$j] = $horairesi[$j]; - } - } - - for ($i = 0; $i < $nbofchoice; $i++) { - $choixjourretrait = GETPOST('choixjourretrait'); - if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourretrait[0], $_SESSION["annee"])) { - for ($j = $i; $j < $nbofchoice; $j++) { - $k = $j + 1; - $_SESSION["horaires$j"] = $_SESSION["horaires$k"]; - } - - array_splice($_SESSION["totalchoixjour"], $i, 1); - } - } -} - -//report des horaires dans toutes les cases -if (issetAndNoEmpty('reporterhoraires')) { - $_SESSION["horaires0"] = GETPOST("horaires0"); - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - $j = $i + 1; - $_SESSION["horaires$j"] = $_SESSION["horaires$i"]; - } -} - -//report des horaires dans toutes les cases -if (issetAndNoEmpty('resethoraires')) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($i = 0; $i < $nbofchoice; $i++) { - unset($_SESSION["horaires$i"]); - } -} - -// affichage du calendrier -print ''."\n"; - -for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) { - $numerojour = $i - $premierjourmois + 1; - - // On saute a la ligne tous les 7 jours - if (($i % 7) == 0 && $i != 0) { - print ''."\n"; - } - - // On affiche les jours precedants en gris et incliquables - if ($i < $premierjourmois) { - print ''."\n"; - } else { - if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) { - $nbofchoice = count($_SESSION["totalchoixjour"]); - for ($j = 0; $j < $nbofchoice; $j++) { - // show red buttons - if (date("j", $_SESSION["totalchoixjour"][$j]) == $numerojour && date("n", $_SESSION["totalchoixjour"][$j]) == $_SESSION["mois"] && date("Y", $_SESSION["totalchoixjour"][$j]) == $_SESSION["annee"]) { - print ''."\n"; - $dejafait = $numerojour; - } - } - } - - // If no red button, we show green or grey button with number of day - if (isset($dejafait) === false || $dejafait != $numerojour) { - // green button - if (($numerojour >= $jourAJ && $_SESSION["mois"] == $moisAJ && $_SESSION["annee"] == $anneeAJ) || ($_SESSION["mois"] > $moisAJ && $_SESSION["annee"] == $anneeAJ) || $_SESSION["annee"] > $anneeAJ) { - print ''."\n"; - } else { - // grey button - print ''."\n"; - } - } - } -} - -//fin du tableau -print ''."\n"; -print '
    '.dol_print_date(mktime(0, 0, 0, 0, $i, 10), '%A').'
    '.$numerojour.'
    '."\n"; -print '
    '."\n"; - -print '
    '."\n"; - -// affichage de tous les jours choisis -if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) { - //affichage des jours - print '
    '."\n"; - print '
    '; - print ''.$langs->trans("SelectedDays").':'."
    \n"; - print $langs->trans("SelectDayDesc")."
    \n"; - print '

    '; - - print ''."\n"; - print ''."\n"; - print ''."\n"; - - for ($i = 0; $i < $_SESSION["nbrecaseshoraires"]; $i++) { - $j = $i + 1; - print ''."\n"; - } - - if ($_SESSION["nbrecaseshoraires"] < 10) { - print ''."\n"; - } - - print ''."\n"; - - //affichage de la liste des jours choisis - $nbofchoice = count($_SESSION["totalchoixjour"]); - - for ($i = 0; $i < $nbofchoice; $i++) { - print ''."\n"; - print ''; - - //affichage des cases d'horaires - for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) { - //si on voit une erreur, le fond de la case est rouge - if (isset($errheure[$i][$j]) && $errheure[$i][$j]) { - print ''."\n"; - } else { - //sinon la case est vide normalement - print ''."\n"; - } - } - print ''."\n"; - } - - print '
    '.$langs->trans("Time").' '.$j.'
    '.dol_print_date($_SESSION["totalchoixjour"][$i], 'daytext').' ('.dol_print_date($_SESSION["totalchoixjour"][$i], '%A').')
    '."\n"; - - // show buttons to cancel, delete days or create survey - print ''."\n"; - print ''."\n"; - print ''."\n"; - print''."\n"; - print ''."\n"; - print '


    '."\n"; -} - -print ''."\n"; -print ''."\n"; -print ''."\n"; -//fin du formulaire et bandeau de pied -print ''."\n"; -//bandeau de pied -print '



    '."\n"; -print '
    '."\n"; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/wizard/create_survey.php b/htdocs/opensurvey/wizard/create_survey.php deleted file mode 100644 index 48e6b56c..00000000 --- a/htdocs/opensurvey/wizard/create_survey.php +++ /dev/null @@ -1,214 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * Copyright (C) 2015-2016 Alexandre Spangaro - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/opensurvey/wizard/create_survey.php - * \ingroup opensurvey - * \brief Page to create a new survey - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; -require_once DOL_DOCUMENT_ROOT."/core/class/doleditor.class.php"; -require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php"; - -// Security check -if (!$user->rights->opensurvey->write) { - accessforbidden(); -} - -$langs->load("opensurvey"); - -$title = GETPOST('title'); -$description = GETPOST('description', 'restricthtml'); -$mailsonde = GETPOST('mailsonde'); -$creation_sondage_date = GETPOST('creation_sondage_date'); -$creation_sondage_autre = GETPOST('creation_sondage_autre'); - -// We init some session variable to avoir warning -$session_var = array('title', 'description', 'mailsonde'); -foreach ($session_var as $var) { - if (isset($_SESSION[$var])) { - $_SESSION[$var] = null; - } -} - -// On initialise également les autres variables -$cocheplus = ''; -$cochemail = ''; - -// Jump to correct page -if (!empty($creation_sondage_date) || !empty($creation_sondage_autre)) { - $_SESSION["title"] = $title; - $_SESSION["description"] = $description; - - if (GETPOST('mailsonde') == 'on') { - $_SESSION["mailsonde"] = true; - } else { - $_SESSION["mailsonde"] = false; - } - - if (GETPOST('allow_comments') == 'on') { - $_SESSION['allow_comments'] = true; - } else { - $_SESSION['allow_comments'] = false; - } - - if (GETPOST('allow_spy') == 'on') { - $_SESSION['allow_spy'] = true; - } else { - $_SESSION['allow_spy'] = false; - } - - $testdate = false; - $champdatefin = dol_mktime(0, 0, 0, GETPOST('champdatefinmonth'), GETPOST('champdatefinday'), GETPOST('champdatefinyear')); - - if ($champdatefin && ($champdatefin > 0)) { // A date was provided - // Expire date is not before today - if ($champdatefin >= dol_now()) { - $testdate = true; - $_SESSION['champdatefin'] = dol_print_date($champdatefin, 'dayrfc'); - } else { - $testdate = true; - $_SESSION['champdatefin'] = dol_print_date($champdatefin, 'dayrfc'); - //$testdate = false; - //$_SESSION['champdatefin'] = dol_print_date($champdatefin,'dayrfc'); - setEventMessages('ExpireDate', null, 'warnings'); - } - } - - if (!$testdate) { - setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv("ExpireDate")), null, 'errors'); - } - - if ($title && $testdate) { - if (!empty($creation_sondage_date)) { - header("Location: choix_date.php"); - exit(); - } - - if (!empty($creation_sondage_autre)) { - header("Location: choix_autre.php"); - exit(); - } - } -} - - - - -/* - * View - */ - -$form = new Form($db); - -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $langs->trans("OpenSurvey"), '', "", 0, 0, $arrayofjs, $arrayofcss); - -print load_fiche_titre($langs->trans("CreatePoll").' (1 / 2)'); - -// debut du formulaire -print '
    '."\n"; -print ''; - -print dol_get_fiche_head(); - -// Affichage des différents champs textes a remplir -print ''."\n"; - -print ''."\n"; -if (!$_SESSION["title"] && (GETPOST('creation_sondage_date') || GETPOST('creation_sondage_autre'))) { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("PollTitle")), null, 'errors'); -} - -print ''."\n"; -print ''."\n"; -print ''."\n"; - -print ''."\n"; -print '
    '.$langs->trans("PollTitle").'
    '.$langs->trans("Description").''; -$doleditor = new DolEditor('description', $_SESSION["description"], '', 120, 'dolibarr_notes', 'In', 1, 1, 1, ROWS_7, '90%'); -$doleditor->Create(0, ''); -print '
    '.$langs->trans("ExpireDate").''; - -print $form->selectDate($champdatefin ? $champdatefin : -1, 'champdatefin', '', '', '', "add", 1, 0); - -print '
    '."\n"; - -print dol_get_fiche_end(); - -//focus javascript sur le premier champ -print ''."\n"; - -print '
    '."\n"; - -// Check or not - -if ($_SESSION["mailsonde"]) { - $cochemail = "checked"; -} - -print '
    '."\n"; - -if ($_SESSION['allow_comments']) { - $allow_comments = 'checked'; -} -if (GETPOSTISSET('allow_comments')) { - $allow_comments = GETPOST('allow_comments') ? 'checked' : ''; -} -print '
    '."\n"; - -if ($_SESSION['allow_spy']) { - $allow_spy = 'checked'; -} -if (GETPOSTISSET('allow_spy')) { - $allow_spy = GETPOST('allow_spy') ? 'checked' : ''; -} -print '
    '."\n"; - -if (GETPOST('choix_sondage')) { - if (GETPOST('choix_sondage') == 'date') { - print ''; - } else { - print ''; - } - print ''; - print '
    trans("TypeDate") : $langs->trans("TypeClassic")).')">'; -} else { - // Show image to selecte between date survey or other survey - print '
    '."\n"; - print ' '."\n"; - print ''."\n"; - print ' '."\n"; - print ''."\n"; - print '
    '.$langs->trans("CreateSurveyDate").'
    '.$langs->trans("CreateSurveyStandard").'
    '."\n"; -} -print '


    '."\n"; -print '
    '."\n"; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/opensurvey/wizard/index.php b/htdocs/opensurvey/wizard/index.php deleted file mode 100644 index b8ccd0d8..00000000 --- a/htdocs/opensurvey/wizard/index.php +++ /dev/null @@ -1,70 +0,0 @@ - - * Copyright (C) 2014 Marcos García - * Copyright (C) 2016 Regis Houssin - * Copyright (C) 2019 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', '1'); -} - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/opensurvey/lib/opensurvey.lib.php'; - -// Security check -if (!$user->rights->opensurvey->write) { - accessforbidden(); -} - -$langs->load("opensurvey"); - - -/* - * View - */ - -$arrayofjs = array(); -$arrayofcss = array('/opensurvey/css/style.css'); -llxHeader('', $langs->trans("Survey"), '', "", 0, 0, $arrayofjs, $arrayofcss); - -print load_fiche_titre($langs->trans("CreatePoll"), '', 'poll'); - -print '
    '; -print ''; -print '
    '; -print '

    '.$langs->trans("OrganizeYourMeetingEasily").'

    '; -print '
    '; -print '
    '; -print '
    '; -print '
    '; -print ''; -print '
    '; -print '
    '; -print '
    '; -print ''; -print '
    '; -print '
    '; -print '
    '; -print '
    '; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php deleted file mode 100644 index 9b3a2a74..00000000 --- a/htdocs/paybox/admin/paybox.php +++ /dev/null @@ -1,299 +0,0 @@ - - * Copyright (C) 2005-2010 Laurent Destailleur - * Copyright (C) 2011-2012 Juanjo Menent - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/paybox/admin/paybox.php - * \ingroup paybox - * \brief Page to setup paybox module - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - -$servicename = 'PayBox'; - -// Load translation files required by the page -$langs->loadLangs(array('admin', 'other', 'paybox', 'paypal', 'stripe')); - -if (!$user->admin) { - accessforbidden(); -} - -$action = GETPOST('action', 'aZ09'); - - -if ($action == 'setvalue' && $user->admin) { - $db->begin(); - //$result=dolibarr_set_const($db, "PAYBOX_IBS_DEVISE", GETPOST("PAYBOX_IBS_DEVISE"),'chaine',0,'',$conf->entity); - $result = dolibarr_set_const($db, "PAYBOX_CGI_URL_V1", GETPOST('PAYBOX_CGI_URL_V1', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_CGI_URL_V2", GETPOST('PAYBOX_CGI_URL_V2', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_IBS_SITE", GETPOST('PAYBOX_IBS_SITE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_IBS_RANG", GETPOST('PAYBOX_IBS_RANG', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_PBX_IDENTIFIANT", GETPOST('PAYBOX_PBX_IDENTIFIANT', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - // Payment token for URL - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYBOX_HMAC_KEY", dol_encode(GETPOST('PAYBOX_HMAC_KEY', 'alpha')), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - - - if (!$error) { - $db->commit(); - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - $db->rollback(); - dol_print_error($db); - } -} - - -/* - * View - */ - -$IBS_SITE = "1999888"; // Site test -if (empty($conf->global->PAYBOX_IBS_SITE)) { - $conf->global->PAYBOX_IBS_SITE = $IBS_SITE; -} -$IBS_RANG = "99"; // Rang test -if (empty($conf->global->PAYBOX_IBS_RANG)) { - $conf->global->PAYBOX_IBS_RANG = $IBS_RANG; -} -$IBS_DEVISE = "978"; // Euro -if (empty($conf->global->PAYBOX_IBS_DEVISE)) { - $conf->global->PAYBOX_IBS_DEVISE = $IBS_DEVISE; -} - -llxHeader(); - -$linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("PayBoxSetup"), $linkback, 'title_setup'); - -$h = 0; -$head = array(); - -$head[$h][0] = DOL_URL_ROOT."/paybox/admin/paybox.php"; -$head[$h][1] = $langs->trans("PayBox"); -$head[$h][2] = 'payboxaccount'; -$h++; - -print '
    '; -print ''; -print ''; - -print dol_get_fiche_head($head, 'payboxaccount', '', -1); - -print $langs->trans("PayBoxDesc")."
    \n"; -print '
    '; - -print ''; -print ''; -print ''; -print ''; -print "\n"; - - -print ''; - - -print ''; - - -print ''; - -print ''; - -print ''; -print ''; -print ''; -print "\n"; - -/* - -print ''; -*/ - -/* - -print ''; -*/ - - -print ''; - - -print ''; - - -if (isModEnabled("banque")) { - print ''; -} - - -print ''; - - -print ''; - -print ''; - - -print ''; - - -print ''; - -// Payment token for URL -print ''; - -print ''; - -print '
    '.$langs->trans("AccountParameter").''.$langs->trans("Value").'
    '; -print ''.$langs->trans("PAYBOX_PBX_SITE").''; -print ''; -print '
    '.$langs->trans("Example").': 1999888 ('.$langs->trans("Test").')
    '; -print '
    '; -print ''.$langs->trans("PAYBOX_PBX_RANG").''; -print ''; -print '
    '.$langs->trans("Example").': 99 ('.$langs->trans("Test").')
    '; -print '
    '; -print ''.$langs->trans("PAYBOX_PBX_IDENTIFIANT").''; -print ''; -print '
    '.$langs->trans("Example").': 2 ('.$langs->trans("Test").')
    '; -print '
    '; -print ''.$langs->trans("PAYBOX_HMAC_KEY").''; -print ''; -print '
    '.$langs->trans("Example").': 1A2B3C4D5E6F
    '; -print '
    '.$langs->trans("UsageParameter").''.$langs->trans("Value").'
    '; -print $langs->trans("PAYBOX_IBS_DEVISE").''; -print ''; -print '
    '.$langs->trans("Example").': 978 (EUR)'; -print '
    '; -print $langs->trans("PAYBOX_CGI_URL_V1").''; -print ''; -print '
    '.$langs->trans("Example").': http://mysite/cgi-bin/module_linux.cgi'; -print '
    '; -print ''.$langs->trans("PAYBOX_CGI_URL_V2").''; -print ''; -print '
    '.$langs->trans("Example").' (preprod): https://preprod-tpeweb.paybox.com/php/'; -print '
    '.$langs->trans("Example").' (prod): https://tpeweb.paybox.com/php/
    '; -print '
    '; -print $langs->trans("PublicVendorName").''; -print ''; -print '
    '.$langs->trans("Example").': '.$mysoc->name.''; -print '
    '; - print $langs->trans("BankAccount").''; - $form->select_comptes($conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS, 'PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); - print '
    '; -print $langs->trans("CSSUrlForPaymentForm").''; -print ''; -print '
    '.$langs->trans("Example").': http://mysite/mycss.css
    '; -print '
    '; -print $langs->trans("MessageForm").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_FORM', $conf->global->ONLINE_PAYMENT_MESSAGE_FORM, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageOK").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_OK', $conf->global->ONLINE_PAYMENT_MESSAGE_OK, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageKO").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_KO', $conf->global->ONLINE_PAYMENT_MESSAGE_KO, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("ONLINE_PAYMENT_SENDEMAIL").''; -print ''; -print '   '.$langs->trans("Example").': myemail@myserver.com, Payment service <myemail2@myserver2.com>'; -print '
    '; -print $langs->trans("SecurityToken").''; -print ''; -if (!empty($conf->use_javascript_ajax)) { - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); -} -print '
    '; -print $langs->trans("SecurityTokenIsUnique").''; -print $form->selectyesno("PAYMENT_SECURITY_TOKEN_UNIQUE", (empty($conf->global->PAYMENT_SECURITY_TOKEN) ? 0 : $conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE), 1); -print '
    '; - -print dol_get_fiche_end(); - -print $form->buttonsSaveCancel("Modify", ''); - -print '
    '; - -print '

    '; - -include DOL_DOCUMENT_ROOT.'/core/tpl/onlinepaymentlinks.tpl.php'; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/paybox/img/object_paybox.png b/htdocs/paybox/img/object_paybox.png deleted file mode 100644 index 4bd819f5b3dfeeb7c2e632f3bda94922a99e8307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10166 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 Q{o?@&GAhz#lJKDa0bsjKCIA2c diff --git a/htdocs/paybox/lib/paybox.lib.php b/htdocs/paybox/lib/paybox.lib.php deleted file mode 100644 index 7f41d45d..00000000 --- a/htdocs/paybox/lib/paybox.lib.php +++ /dev/null @@ -1,229 +0,0 @@ - - * Copyright (C) 2005-2007 Regis Houssin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/paybox/lib/paybox.lib.php - * \ingroup paybox - * \brief Library for common paybox functions - */ - - - - -/** - * Create a redirect form to paybox form - * - * @param int $PRICE Price - * @param string $CURRENCY Currency - * @param string $EMAIL EMail - * @param string $urlok Url to go back if payment is OK - * @param string $urlko Url to go back if payment is KO - * @param string $TAG Full tag - * @return int 1 if OK, -1 if ERROR - */ -function print_paybox_redirect($PRICE, $CURRENCY, $EMAIL, $urlok, $urlko, $TAG) -{ - global $conf, $langs, $db; - - dol_syslog("Paybox.lib::print_paybox_redirect", LOG_DEBUG); - - // Clean parameters - $PBX_IDENTIFIANT = "2"; // Identifiant pour v2 test - if (!empty($conf->global->PAYBOX_PBX_IDENTIFIANT)) { - $PBX_IDENTIFIANT = $conf->global->PAYBOX_PBX_IDENTIFIANT; - } - $IBS_SITE = "1999888"; // Site test - if (!empty($conf->global->PAYBOX_IBS_SITE)) { - $IBS_SITE = $conf->global->PAYBOX_IBS_SITE; - } - $IBS_RANG = "99"; // Rang test - if (!empty($conf->global->PAYBOX_IBS_RANG)) { - $IBS_RANG = $conf->global->PAYBOX_IBS_RANG; - } - $IBS_DEVISE = "840"; // Currency (Dollar US by default) - if ($CURRENCY == 'EUR') { - $IBS_DEVISE = "978"; - } - if ($CURRENCY == 'USD') { - $IBS_DEVISE = "840"; - } - - $URLPAYBOX = ""; - if ($conf->global->PAYBOX_CGI_URL_V1) { - $URLPAYBOX = $conf->global->PAYBOX_CGI_URL_V1; - } - if ($conf->global->PAYBOX_CGI_URL_V2) { - $URLPAYBOX = $conf->global->PAYBOX_CGI_URL_V2; - } - - if (empty($IBS_DEVISE)) { - dol_print_error('', "Paybox setup param PAYBOX_IBS_DEVISE not defined"); - return -1; - } - if (empty($URLPAYBOX)) { - dol_print_error('', "Paybox setup param PAYBOX_CGI_URL_V1 and PAYBOX_CGI_URL_V2 undefined"); - return -1; - } - if (empty($IBS_SITE)) { - dol_print_error('', "Paybox setup param PAYBOX_IBS_SITE not defined"); - return -1; - } - if (empty($IBS_RANG)) { - dol_print_error('', "Paybox setup param PAYBOX_IBS_RANG not defined"); - return -1; - } - - $conf->global->PAYBOX_HASH = 'sha512'; - - // Definition des parametres vente produit pour paybox - $IBS_CMD = $TAG; - $IBS_TOTAL = $PRICE * 100; // En centimes - $IBS_MODE = 1; // Mode formulaire - $IBS_PORTEUR = $EMAIL; - $IBS_RETOUR = "montant:M;ref:R;auto:A;trans:T"; // Format des parametres du get de validation en reponse (url a definir sous paybox) - $IBS_TXT = ' '; // Use a space - $IBS_EFFECTUE = $urlok; - $IBS_ANNULE = $urlko; - $IBS_REFUSE = $urlko; - $IBS_BKGD = "#FFFFFF"; - $IBS_WAIT = "2000"; - $IBS_LANG = "GBR"; // By default GBR=english (FRA, GBR, ESP, ITA et DEU...) - if (preg_match('/^FR/i', $langs->defaultlang)) { - $IBS_LANG = "FRA"; - } - if (preg_match('/^ES/i', $langs->defaultlang)) { - $IBS_LANG = "ESP"; - } - if (preg_match('/^IT/i', $langs->defaultlang)) { - $IBS_LANG = "ITA"; - } - if (preg_match('/^DE/i', $langs->defaultlang)) { - $IBS_LANG = "DEU"; - } - if (preg_match('/^NL/i', $langs->defaultlang)) { - $IBS_LANG = "NLD"; - } - if (preg_match('/^SE/i', $langs->defaultlang)) { - $IBS_LANG = "SWE"; - } - $IBS_OUTPUT = 'E'; - $PBX_SOURCE = 'HTML'; - $PBX_TYPEPAIEMENT = 'CARTE'; - $PBX_HASH = $conf->global->PAYBOX_HASH; - $PBX_TIME = dol_print_date(dol_now(), 'dayhourrfc', 'gmt'); - - $msg = "PBX_IDENTIFIANT=".$PBX_IDENTIFIANT. - "&PBX_MODE=".$IBS_MODE. - "&PBX_SITE=".$IBS_SITE. - "&PBX_RANG=".$IBS_RANG. - "&PBX_TOTAL=".$IBS_TOTAL. - "&PBX_DEVISE=".$IBS_DEVISE. - "&PBX_CMD=".$IBS_CMD. - "&PBX_PORTEUR=".$IBS_PORTEUR. - "&PBX_RETOUR=".$IBS_RETOUR. - "&PBX_EFFECTUE=".$IBS_EFFECTUE. - "&PBX_ANNULE=".$IBS_ANNULE. - "&PBX_REFUSE=".$IBS_REFUSE. - "&PBX_TXT=".$IBS_TXT. - "&PBX_BKGD=".$IBS_BKGD. - "&PBX_WAIT=".$IBS_WAIT. - "&PBX_LANGUE=".$IBS_LANG. - "&PBX_OUTPUT=".$IBS_OUTPUT. - "&PBX_SOURCE=".$PBX_SOURCE. - "&PBX_TYPEPAIEMENT=".$PBX_TYPEPAIEMENT; - "&PBX_HASH=".$PBX_HASH; - "&PBX_TIME=".$PBX_TIME; - - $binKey = pack("H*", dol_decode($conf->global->PAYBOX_HMAC_KEY)); - - $hmac = strtoupper(hash_hmac($PBX_HASH, $msg, $binKey)); - - - dol_syslog("Soumission Paybox", LOG_DEBUG); - dol_syslog("IBS_MODE: $IBS_MODE", LOG_DEBUG); - dol_syslog("IBS_SITE: $IBS_SITE", LOG_DEBUG); - dol_syslog("IBS_RANG: $IBS_RANG", LOG_DEBUG); - dol_syslog("IBS_TOTAL: $IBS_TOTAL", LOG_DEBUG); - dol_syslog("IBS_DEVISE: $IBS_DEVISE", LOG_DEBUG); - dol_syslog("IBS_CMD: $IBS_CMD", LOG_DEBUG); - dol_syslog("IBS_PORTEUR: $IBS_PORTEUR", LOG_DEBUG); - dol_syslog("IBS_RETOUR: $IBS_RETOUR", LOG_DEBUG); - dol_syslog("IBS_EFFECTUE: $IBS_EFFECTUE", LOG_DEBUG); - dol_syslog("IBS_ANNULE: $IBS_ANNULE", LOG_DEBUG); - dol_syslog("IBS_REFUSE: $IBS_REFUSE", LOG_DEBUG); - dol_syslog("IBS_BKGD: $IBS_BKGD", LOG_DEBUG); - dol_syslog("IBS_WAIT: $IBS_WAIT", LOG_DEBUG); - dol_syslog("IBS_LANG: $IBS_LANG", LOG_DEBUG); - dol_syslog("IBS_OUTPUT: $IBS_OUTPUT", LOG_DEBUG); - dol_syslog("PBX_IDENTIFIANT: $PBX_IDENTIFIANT", LOG_DEBUG); - dol_syslog("PBX_SOURCE: $PBX_SOURCE", LOG_DEBUG); - dol_syslog("PBX_TYPEPAIEMENT: $PBX_TYPEPAIEMENT", LOG_DEBUG); - dol_syslog("PBX_HASH: $PBX_HASH", LOG_DEBUG); - dol_syslog("PBX_TIME: $PBX_TIME", LOG_DEBUG); - - header("Content-type: text/html; charset=".$conf->file->character_set_client); - header("X-Content-Type-Options: nosniff"); - - print ''."\n"; - print ''."\n"; - print "\n"; - print ''."\n"; - print ''."\n"; - print "\n"; - - // Formulaire pour module Paybox - print '
    '."\n"; - - // For Paybox V2 (PBX_xxx) - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - // Footprint of parameters - print ''."\n"; - print '
    '."\n"; - - - print "\n"; - print ''."\n"; - print "\n"; - print ''."\n"; - print "\n"; - - return; -} diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php deleted file mode 100644 index 68759eeb..00000000 --- a/htdocs/paypal/admin/paypal.php +++ /dev/null @@ -1,387 +0,0 @@ - - * Copyright (C) 2005-2013 Laurent Destailleur - * Copyright (C) 2011-2012 Regis Houssin - * Copyright (C) 2011-2012 Juanjo Menent - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/paypal/admin/paypal.php - * \ingroup paypal - * \brief Page to setup paypal module - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/paypal/lib/paypal.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - -$servicename = 'PayPal'; - -// Load translation files required by the page -$langs->loadLangs(array('admin', 'other', 'paypal', 'paybox', 'stripe')); - -if (!$user->admin) { - accessforbidden(); -} - -$action = GETPOST('action', 'aZ09'); - -if ($action == 'setvalue' && $user->admin) { - $db->begin(); - - $result = dolibarr_set_const($db, "PAYPAL_API_USER", GETPOST('PAYPAL_API_USER', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_API_PASSWORD", GETPOST('PAYPAL_API_PASSWORD', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_API_SIGNATURE", GETPOST('PAYPAL_API_SIGNATURE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_SSLVERSION", GETPOST('PAYPAL_SSLVERSION', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_API_INTEGRAL_OR_PAYPALONLY", GETPOST('PAYPAL_API_INTEGRAL_OR_PAYPALONLY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "PAYPAL_ADD_PAYMENT_URL", GETPOST('PAYPAL_ADD_PAYMENT_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - // Payment token for URL - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - if (empty($conf->use_javascript_ajax)) { - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - } - - if (!$error) { - $db->commit(); - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - $db->rollback(); - dol_print_error($db); - } -} - -if ($action == "setlive") { - $liveenable = GETPOST('value', 'int') ? 0 : 1; - $res = dolibarr_set_const($db, "PAYPAL_API_SANDBOX", $liveenable, 'yesno', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - if (!$error) { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - setEventMessages($langs->trans("Error"), null, 'errors'); - } -} - - -/* - * View - */ - -$form = new Form($db); - -llxHeader('', $langs->trans("PaypalSetup")); - - -$linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("ModuleSetup").' PayPal', $linkback); - -$head = paypaladmin_prepare_head(); - -print '
    '; -print ''; -print ''; - - -print dol_get_fiche_head($head, 'paypalaccount', '', -1); - -print ''.$langs->trans("PaypalDesc")."
    \n"; - -// Test if php curl exist -if (!function_exists('curl_version')) { - $langs->load("errors"); - setEventMessages($langs->trans("ErrorPhpCurlNotInstalled"), null, 'errors'); -} - - -print '
    '; - -print '
    '; -print ''; - -// Account Parameters -print ''; -print ''; -print ''; -print "\n"; - -print ''; -print ''; - -print ''; - - -print ''; - - -print ''; - - -print ''; - -print '
    '.$langs->trans("AccountParameter").''.$langs->trans("Value").'
    '; -print $langs->trans("PaypalLiveEnabled").''; -if (empty($conf->global->PAYPAL_API_SANDBOX)) { - print ''; - print img_picto($langs->trans("Activated"), 'switch_on'); -} else { - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); -} -print '
    '; -print $langs->trans("PAYPAL_API_USER").''; -print ''; -print '   '.$langs->trans("Example").': admin-facilitator_api1.example.com, paypal_api1.mywebsite.com'; -print '
    '; -print $langs->trans("PAYPAL_API_PASSWORD").''; -print ''; -print '
    '; -print $langs->trans("PAYPAL_API_SIGNATURE").''; -print ''; -print '
    '.$langs->trans("Example").': ASsqXEmw4KzmX-CPChWSVDNCNfd.A3YNR7uz-VncXXAERFDFDFDF'; -print '
    '; -print $langs->trans("PAYPAL_SSLVERSION").''; -print $form->selectarray("PAYPAL_SSLVERSION", array('1'=> $langs->trans('TLSv1'), '6'=> $langs->trans('TLSv1.2')), $conf->global->PAYPAL_SSLVERSION); -print '
    '; -print '
    '; - -print '
    '; - - -print '
    '; -print ''; - -// Usage Parameters -print ''; -print ''; -print ''; -print "\n"; - - -print ''; - -/* -print ''; -*/ - - -print ''; - -if (isModEnabled("banque")) { - print ''; -} - -print ''; - - -print ''; - - -print ''; - - -print ''; - - -print ''; - - -print ''; - -print '
    '.$langs->trans("UsageParameter").''.$langs->trans("Value").'
    '; -print $langs->trans("PAYPAL_API_INTEGRAL_OR_PAYPALONLY").''; -print $form->selectarray("PAYPAL_API_INTEGRAL_OR_PAYPALONLY", array('integral'=> $langs->trans('PaypalModeIntegral'), 'paypalonly'=> $langs->trans('PaypalModeOnlyPaypal')), $conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY); -print '
    '; -print ''.$langs->trans("PAYPAL_API_EXPRESS").''; -print $form->selectyesno("PAYPAL_API_EXPRESS",$conf->global->PAYPAL_API_EXPRESS); -print '
    '; -print $langs->trans("PublicVendorName").''; -print ''; -print '   '.$langs->trans("Example").': '.$mysoc->name.''; -print '
    '; - print $langs->trans("BankAccount").''; - print img_picto('', 'bank_account').' '; - $form->select_comptes($conf->global->PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS, 'PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); - print '
    '; -print $langs->trans("CSSUrlForPaymentForm").''; -print ''; -print '   '.$langs->trans("Example").': http://mysite/mycss.css'; -print '
    '; -print $langs->trans("PAYPAL_ADD_PAYMENT_URL").''; -print $form->selectyesno("PAYPAL_ADD_PAYMENT_URL", $conf->global->PAYPAL_ADD_PAYMENT_URL, 1); -print '
    '; -print $langs->trans("MessageForm").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_FORM', $conf->global->ONLINE_PAYMENT_MESSAGE_FORM, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_4, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageOK").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_OK', $conf->global->ONLINE_PAYMENT_MESSAGE_OK, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_4, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageKO").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_KO', $conf->global->ONLINE_PAYMENT_MESSAGE_KO, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_4, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("ONLINE_PAYMENT_SENDEMAIL").''; -print ''; -print '   '.$langs->trans("Example").': myemail@myserver.com, Payment service <myemail2@myserver2.com>'; -print '
    '; -print '
    '; - -print '
    '; - -print '
    '; -print ''; - -print ''; -print ''; -print ''; -print "\n"; - -// Payment token for URL -print ''; - -print ''; - -print '
    '.$langs->trans("UrlGenerationParameters").''.$langs->trans("Value").'
    '; -print $langs->trans("SecurityToken").''; -print ''; -if (!empty($conf->use_javascript_ajax)) { - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); -} -if (!empty($conf->global->PAYMENT_SECURITY_ACCEPT_ANY_TOKEN)) { - $langs->load("errors"); - print img_warning($langs->trans("WarningTheHiddenOptionIsOn", 'PAYMENT_SECURITY_ACCEPT_ANY_TOKEN'), '', 'pictowarning marginleftonly'); -} -print '
    '; -print $langs->trans("SecurityTokenIsUnique").''; -if ($conf->use_javascript_ajax) { - print ajax_constantonoff('PAYMENT_SECURITY_TOKEN_UNIQUE'); -} else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("PAYMENT_SECURITY_TOKEN_UNIQUE", $arrval, $conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE); -} -print '
    '; -print '
    '; - -print dol_get_fiche_end(); - -print $form->buttonsSaveCancel("Modify", ''); - -print '
    '; - -print '

    '; - -// Help doc -print ''.$langs->trans("InformationToFindParameters", "Paypal").':
    '; -if (!empty($conf->use_javascript_ajax)) { - print ''.$langs->trans("ClickHere").'...'; -} - -$realpaypalurl = 'www.paypal.com'; -$sandboxpaypalurl = 'developer.paypal.com'; - -print '
    '; -print 'Your API authentication information can be found with following steps. We recommend that you open a separate Web browser session when carrying out this procedure.
    -1. Log in to your PayPal account (on real paypal '.$realpaypalurl.' (or sandbox '.$sandboxpaypalurl.').
    -2. Click the "Profile" or "Preferencies" subtab located under the My Account heading.
    -3. Click the link "API Access".
    -4. Click the View API Certificate link in the right column.
    -5. Click the Request API signature radio button on the Request API Credentials page.
    -6. Complete the Request API Credential Request form by clicking the agreement checkbox and clicking Submit.
    -7. Save the values for API Username, Password and Signature (make sure this long character signature is copied).
    -8. Click the "Modify" button after copying your API Username, Password, and Signature. -'; -print '
    '; - -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} - -print '

    '; - -$token = ''; - -include DOL_DOCUMENT_ROOT.'/core/tpl/onlinepaymentlinks.tpl.php'; - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/paypal/img/object_paypal.png b/htdocs/paypal/img/object_paypal.png deleted file mode 100644 index 872a0356ac54b06e24b2749ec23b92f497402b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6962 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 E1ErhzJ^%m! diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php deleted file mode 100644 index 79003956..00000000 --- a/htdocs/paypal/lib/paypal.lib.php +++ /dev/null @@ -1,617 +0,0 @@ - - * Copyright (C) 2011-2012 Regis Houssin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/paypal/lib/paypal.lib.php - * \ingroup paypal - * \brief Library for common paypal functions - */ - -require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; - - -/** - * Define head array for tabs of paypal tools setup pages - * - * @return Array of head - */ -function paypaladmin_prepare_head() -{ - global $langs, $conf; - - $h = 0; - $head = array(); - - $head[$h][0] = DOL_URL_ROOT."/paypal/admin/paypal.php"; - $head[$h][1] = $langs->trans("PayPal"); - $head[$h][2] = 'paypalaccount'; - $h++; - - $object = new stdClass(); - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab - // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'paypaladmin'); - - complete_head_from_modules($conf, $langs, $object, $head, $h, 'paypaladmin', 'remove'); - - return $head; -} - - -/** - * Send redirect to paypal to browser - * - * @param float $paymentAmount Amount - * @param string $currencyCodeType Currency code - * @param string $paymentType Payment type - * @param string $returnURL Url to use if payment is OK - * @param string $cancelURL Url to use if payment is KO - * @param string $tag Full tag - * @return string No return (a redirect is done) if OK, or Error message if KO - */ -function print_paypal_redirect($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $tag) -{ - //declaring of global variables - global $conf, $langs; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - global $shipToName, $shipToStreet, $shipToCity, $shipToState, $shipToCountryCode, $shipToZip, $shipToStreet2, $phoneNum; - global $email, $desc; - - //'------------------------------------ - //' Calls the SetExpressCheckout API call - //' - //'------------------------------------------------- - - if (empty($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY)) { - $conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY = 'integral'; - } - - $solutionType = 'Sole'; - $landingPage = 'Billing'; - // For payment with Paypal only - if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'paypalonly') { - $solutionType = 'Mark'; - $landingPage = 'Login'; - } - // For payment with Credit card or Paypal - if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'integral') { - $solutionType = 'Sole'; - $landingPage = 'Billing'; - } - // For payment with Credit card - if ($conf->global->PAYPAL_API_INTEGRAL_OR_PAYPALONLY == 'cconly') { - $solutionType = 'Sole'; - $landingPage = 'Billing'; - } - - dol_syslog("print_paypal_redirect expresscheckout redirect with callSetExpressCheckout $paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $tag, $solutionType, $landingPage, $shipToName, $shipToStreet, $shipToCity, $shipToState, $shipToCountryCode, $shipToZip, $shipToStreet2, $phoneNum"); - $resArray = callSetExpressCheckout( - $paymentAmount, - $currencyCodeType, - $paymentType, - $returnURL, - $cancelURL, - $tag, - $solutionType, - $landingPage, - $shipToName, - $shipToStreet, - $shipToCity, - $shipToState, - $shipToCountryCode, - $shipToZip, - $shipToStreet2, - $phoneNum, - $email, - $desc - ); - - dol_syslog("print_paypal_redirect resArray=".var_export($resArray, true), LOG_DEBUG); - - $ack = strtoupper($resArray["ACK"]); - if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { - $token = $resArray["TOKEN"]; - - // Redirect to paypal.com here - $payPalURL = $API_Url.$token; - dol_syslog("Redirect to ".$payPalURL, LOG_INFO); - header("Location: ".$payPalURL); - exit; - } else { - //Display a user friendly Error on the page using any of the following error information returned by PayPal - $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); - $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); - $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); - $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); - - if ($ErrorCode == 10729) { - $mesg .= "PayPal can't accept payments for this thirdparty. An address is defined but is not complete (missing State).
    Ask system administrator to fix address or to setup Paypal module to accept payments even on not complete addresses (remove option PAYPAL_REQUIRE_VALID_SHIPPING_ADDRESS).
    \n"; - } else { - $mesg = $langs->trans('SetExpressCheckoutAPICallFailed')."
    \n"; - $mesg .= $langs->trans('DetailedErrorMessage').": ".$ErrorLongMsg."
    \n"; - $mesg .= $langs->trans('ShortErrorMessage').": ".$ErrorShortMsg."
    \n"; - $mesg .= $langs->trans('ErrorCode').": ".$ErrorCode."
    \n"; - $mesg .= $langs->trans('ErrorSeverityCode').": ".$ErrorSeverityCode."
    \n"; - } - - return $mesg; - } -} - -/** - *------------------------------------------------------------------------------------------------------------------------------------------- - * Purpose: Prepares the parameters for the SetExpressCheckout API Call. - * Inputs: - * paymentAmount: Total value of the shopping cart - * currencyCodeType: Currency code value the PayPal API - * paymentType: paymentType has to be one of the following values: Sale or Order or Authorization - * returnURL: the page where buyers return to after they are done with the payment review on PayPal - * cancelURL: the page where buyers return to when they cancel the payment review on PayPal - * shipToName: the Ship to name entered on the merchant's site - * shipToStreet: the Ship to Street entered on the merchant's site - * shipToCity: the Ship to City entered on the merchant's site - * shipToState: the Ship to State entered on the merchant's site - * shipToCountryCode: the Code for Ship to Country entered on the merchant's site - * shipToZip: the Ship to ZipCode entered on the merchant's site - * shipToStreet2: the Ship to Street2 entered on the merchant's site - * phoneNum: the phoneNum entered on the merchant's site - * email: the buyer email - * desc: Product description - * See https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/ - * - * @param double $paymentAmount Payment amount - * @param string $currencyCodeType Currency - * @param string $paymentType Payment type - * @param string $returnURL Return Url - * @param string $cancelURL Cancel Url - * @param string $tag Full tag - * @param string $solutionType Type ('Mark' or 'Sole') - * @param string $landingPage Landing page ('Login' or 'Billing') - * @param string $shipToName Ship to name - * @param string $shipToStreet Ship to street - * @param string $shipToCity Ship to city - * @param string $shipToState Ship to state - * @param string $shipToCountryCode Ship to country code - * @param string $shipToZip Ship to zip - * @param string $shipToStreet2 Ship to street2 - * @param string $phoneNum Phone - * @param string $email Email - * @param string $desc Description - * @return array Array - */ -function callSetExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $tag, $solutionType, $landingPage, $shipToName, $shipToStreet, $shipToCity, $shipToState, $shipToCountryCode, $shipToZip, $shipToStreet2, $phoneNum, $email = '', $desc = '') -{ - //------------------------------------------------------------------------------------------------------------------------------------ - // Construct the parameter string that describes the SetExpressCheckout API call in the shortcut implementation - - //declaring of global variables - global $conf, $langs, $mysoc; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - $nvpstr = ''; - //$nvpstr = $nvpstr . "&VERSION=".$API_version; // Already added by hash_call - $nvpstr = $nvpstr."&RETURNURL=".urlencode($returnURL); - $nvpstr = $nvpstr."&CANCELURL=".urlencode($cancelURL); - if (!empty($conf->global->PAYPAL_ALLOW_NOTES)) { - $nvpstr = $nvpstr."&ALLOWNOTE=0"; - } - if (empty($conf->global->PAYPAL_REQUIRE_VALID_SHIPPING_ADDRESS)) { - $nvpstr = $nvpstr."&NOSHIPPING=1"; // An empty or not complete shipping address will be accepted - } else { - $nvpstr = $nvpstr."&NOSHIPPING=0"; // A valid shipping address is required (full required fields mandatory) - } - $nvpstr = $nvpstr."&SOLUTIONTYPE=".urlencode($solutionType); - $nvpstr = $nvpstr."&LANDINGPAGE=".urlencode($landingPage); - if (!empty($conf->global->PAYPAL_CUSTOMER_SERVICE_NUMBER)) { - $nvpstr = $nvpstr."&CUSTOMERSERVICENUMBER=".urlencode($conf->global->PAYPAL_CUSTOMER_SERVICE_NUMBER); // Hotline phone number - } - - $paypalprefix = 'PAYMENTREQUEST_0_'; - //$paypalprefix = ''; - if (!empty($paypalprefix) && $paymentType == 'Sole') { - $paymentType = 'Sale'; - } - - $nvpstr = $nvpstr."&AMT=".urlencode($paymentAmount); // Total for all elements - - $nvpstr = $nvpstr."&".$paypalprefix."INVNUM=".urlencode($tag); - $nvpstr = $nvpstr."&".$paypalprefix."AMT=".urlencode($paymentAmount); // AMT deprecated by paypal -> PAYMENTREQUEST_n_AMT - $nvpstr = $nvpstr."&".$paypalprefix."ITEMAMT=".urlencode($paymentAmount); // AMT deprecated by paypal -> PAYMENTREQUEST_n_AMT - $nvpstr = $nvpstr."&".$paypalprefix."PAYMENTACTION=".urlencode($paymentType); // PAYMENTACTION deprecated by paypal -> PAYMENTREQUEST_n_PAYMENTACTION - $nvpstr = $nvpstr."&".$paypalprefix."CURRENCYCODE=".urlencode($currencyCodeType); // CURRENCYCODE deprecated by paypal -> PAYMENTREQUEST_n_CURRENCYCODE - - $nvpstr = $nvpstr."&".$paypalprefix."L_PAYMENTREQUEST_0_QTY0=1"; - $nvpstr = $nvpstr."&".$paypalprefix."L_PAYMENTREQUEST_0_AMT0=".urlencode($paymentAmount); - $nvpstr = $nvpstr."&".$paypalprefix."L_PAYMENTREQUEST_0_NAME0=".urlencode($desc); - $nvpstr = $nvpstr."&".$paypalprefix."L_PAYMENTREQUEST_0_NUMBER0=0"; - - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTONAME=".urlencode($shipToName); // SHIPTONAME deprecated by paypal -> PAYMENTREQUEST_n_SHIPTONAME - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOSTREET=".urlencode($shipToStreet); // - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOSTREET2=".urlencode($shipToStreet2); - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOCITY=".urlencode($shipToCity); - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOSTATE=".urlencode($shipToState); - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOCOUNTRYCODE=".urlencode($shipToCountryCode); - $nvpstr = $nvpstr."&".$paypalprefix."SHIPTOZIP=".urlencode($shipToZip); - $nvpstr = $nvpstr."&".$paypalprefix."PHONENUM=".urlencode($phoneNum); - if (!empty($email)) { - $nvpstr = $nvpstr."&".$paypalprefix."EMAIL=".urlencode($email); // EMAIL deprecated by paypal -> PAYMENTREQUEST_n_EMAIL - } - if (!empty($desc)) { - $nvpstr = $nvpstr."&".$paypalprefix."DESC=".urlencode($desc); // DESC deprecated by paypal -> PAYMENTREQUEST_n_DESC - } - - if (!empty($conf->global->PAYPAL_LOGOIMG) && $mysoc->logo) { - global $dolibarr_main_url_root; - - // Define $urlwithroot - $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); - $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file - //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current - - $urllogo = $urlwithroot."/viewimage.php?modulepart=mycompany&file=".urlencode('logos/'.$mysoc->logo); - $nvpstr = $nvpstr."&LOGOIMG=".urlencode($urllogo); - } - if (!empty($conf->global->PAYPAL_BRANDNAME)) { - $nvpstr = $nvpstr."&BRANDNAME=".urlencode($conf->global->PAYPAL_BRANDNAME); // BRANDNAME - } - if (!empty($conf->global->PAYPAL_NOTETOBUYER)) { - $nvpstr = $nvpstr."&NOTETOBUYER=".urlencode($conf->global->PAYPAL_NOTETOBUYER); // PAYPAL_NOTETOBUYER - } - - $_SESSION["FinalPaymentAmt"] = $paymentAmount; - $_SESSION["currencyCodeType"] = $currencyCodeType; - $_SESSION["PaymentType"] = $paymentType; // 'Mark', 'Sole' - $_SESSION['ipaddress'] = getUserRemoteIP(); // Payer ip - - //'--------------------------------------------------------------------------------------------------------------- - //' Make the API call to PayPal - //' If the API call succeded, then redirect the buyer to PayPal to begin to authorize payment. - //' If an error occured, show the resulting errors - //'--------------------------------------------------------------------------------------------------------------- - $resArray = hash_call("SetExpressCheckout", $nvpstr); - $ack = strtoupper($resArray["ACK"]); - if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { - $token = urldecode($resArray["TOKEN"]); - $_SESSION['TOKEN'] = $token; - } - - return $resArray; -} - -/** - * Prepares the parameters for the GetExpressCheckoutDetails API Call. - * - * @param string $token Token - * @return array The NVP Collection object of the GetExpressCheckoutDetails Call Response. - */ -function getDetails($token) -{ - //'-------------------------------------------------------------- - //' At this point, the buyer has completed authorizing the payment - //' at PayPal. The function will call PayPal to obtain the details - //' of the authorization, incuding any shipping information of the - //' buyer. Remember, the authorization is not a completed transaction - //' at this state - the buyer still needs an additional step to finalize - //' the transaction - //'-------------------------------------------------------------- - - //declaring of global variables - global $conf, $langs; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - //'--------------------------------------------------------------------------- - //' Build a second API request to PayPal, using the token as the - //' ID to get the details on the payment authorization - //'--------------------------------------------------------------------------- - $nvpstr = "&TOKEN=".$token; - - //'--------------------------------------------------------------------------- - //' Make the API call and store the results in an array. - //' If the call was a success, show the authorization details, and provide - //' an action to complete the payment. - //' If failed, show the error - //'--------------------------------------------------------------------------- - $resArray = hash_call("GetExpressCheckoutDetails", $nvpstr); - $ack = strtoupper($resArray["ACK"]); - if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { - $_SESSION['payer_id'] = $resArray['PAYERID']; - } - return $resArray; -} - - -/** - * Validate payment - * - * @param string $token Token - * @param string $paymentType Type - * @param string $currencyCodeType Currency - * @param string $payerID Payer ID - * @param string $ipaddress IP Address - * @param string $FinalPaymentAmt Amount - * @param string $tag Full tag - * @return array - */ -function confirmPayment($token, $paymentType, $currencyCodeType, $payerID, $ipaddress, $FinalPaymentAmt, $tag) -{ - /* Gather the information to make the final call to - finalize the PayPal payment. The variable nvpstr - holds the name value pairs - */ - - //declaring of global variables - global $conf, $langs; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - $nvpstr = ''; - $nvpstr .= '&TOKEN='.urlencode($token); - $nvpstr .= '&PAYERID='.urlencode($payerID); - $nvpstr .= '&PAYMENTACTION='.urlencode($paymentType); - $nvpstr .= '&AMT='.urlencode($FinalPaymentAmt); - $nvpstr .= '&CURRENCYCODE='.urlencode($currencyCodeType); - $nvpstr .= '&IPADDRESS='.urlencode($ipaddress); - $nvpstr .= '&INVNUM='.urlencode($tag); - - /* Make the call to PayPal to finalize payment - If an error occured, show the resulting errors - */ - $resArray = hash_call("DoExpressCheckoutPayment", $nvpstr); - - /* Display the API response back to the browser. - If the response from PayPal was a success, display the response parameters' - If the response was an error, display the errors received using APIError.php. - */ - $ack = strtoupper($resArray["ACK"]); - - return $resArray; -} - -/** - * This function makes a DoDirectPayment API call - * - * paymentType: paymentType has to be one of the following values: Sale or Order or Authorization - * paymentAmount: total value of the shopping cart - * currencyCode: currency code value the PayPal API - * firstName: first name as it appears on credit card - * lastName: last name as it appears on credit card - * street: buyer's street address line as it appears on credit card - * city: buyer's city - * state: buyer's state - * countryCode: buyer's country code - * zip: buyer's zip - * creditCardType: buyer's credit card type (i.e. Visa, MasterCard ... ) - * creditCardNumber: buyers credit card number without any spaces, dashes or any other characters - * expDate: credit card expiration date - * cvv2: Card Verification Value - * @return array The NVP Collection object of the DoDirectPayment Call Response. - */ -/* -function DirectPayment($paymentType, $paymentAmount, $creditCardType, $creditCardNumber, $expDate, $cvv2, $firstName, $lastName, $street, $city, $state, $zip, $countryCode, $currencyCode, $tag) -{ - //declaring of global variables - global $conf, $langs; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - //Construct the parameter string that describes DoDirectPayment - $nvpstr = ''; - $nvpstr = $nvpstr . "&AMT=" . urlencode($paymentAmount); // deprecated by paypal - $nvpstr = $nvpstr . "&CURRENCYCODE=" . urlencode($currencyCode); - $nvpstr = $nvpstr . "&PAYMENTACTION=" . urlencode($paymentType); // deprecated by paypal - $nvpstr = $nvpstr . "&CREDITCARDTYPE=" . urlencode($creditCardType); - $nvpstr = $nvpstr . "&ACCT=" . urlencode($creditCardNumber); - $nvpstr = $nvpstr . "&EXPDATE=" . urlencode($expDate); - $nvpstr = $nvpstr . "&CVV2=" . urlencode($cvv2); - $nvpstr = $nvpstr . "&FIRSTNAME=" . urlencode($firstName); - $nvpstr = $nvpstr . "&LASTNAME=" . urlencode($lastName); - $nvpstr = $nvpstr . "&STREET=" . urlencode($street); - $nvpstr = $nvpstr . "&CITY=" . urlencode($city); - $nvpstr = $nvpstr . "&STATE=" . urlencode($state); - $nvpstr = $nvpstr . "&COUNTRYCODE=" . urlencode($countryCode); - $nvpstr = $nvpstr . "&IPADDRESS=" . getUserRemotIP(); - $nvpstr = $nvpstr . "&INVNUM=" . urlencode($tag); - - $resArray=hash_call("DoDirectPayment", $nvpstr); - - return $resArray; -} -*/ - - -/** - * hash_call: Function to perform the API call to PayPal using API signature - * - * @param string $methodName is name of API method. - * @param string $nvpStr is nvp string. - * @return array returns an associtive array containing the response from the server. - */ -function hash_call($methodName, $nvpStr) -{ - //declaring of global variables - global $conf, $langs; - global $API_Endpoint, $API_Url, $API_version, $USE_PROXY, $PROXY_HOST, $PROXY_PORT, $PROXY_USER, $PROXY_PASS; - global $PAYPAL_API_USER, $PAYPAL_API_PASSWORD, $PAYPAL_API_SIGNATURE; - - // TODO problem with triggers - $API_version = "98.0"; - if (!empty($conf->global->PAYPAL_API_SANDBOX) || GETPOST('forcesandbox', 'alpha')) { // We can force sand box with param 'forcesandbox' - $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; - $API_Url = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; - } else { - $API_Endpoint = "https://api-3t.paypal.com/nvp"; - $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; - } - - // Clean parameters - $PAYPAL_API_USER = ""; - if (!empty($conf->global->PAYPAL_API_USER)) { - $PAYPAL_API_USER = $conf->global->PAYPAL_API_USER; - } - $PAYPAL_API_PASSWORD = ""; - if (!empty($conf->global->PAYPAL_API_PASSWORD)) { - $PAYPAL_API_PASSWORD = $conf->global->PAYPAL_API_PASSWORD; - } - $PAYPAL_API_SIGNATURE = ""; - if (!empty($conf->global->PAYPAL_API_SIGNATURE)) { - $PAYPAL_API_SIGNATURE = $conf->global->PAYPAL_API_SIGNATURE; - } - $PAYPAL_API_SANDBOX = ""; - if (!empty($conf->global->PAYPAL_API_SANDBOX)) { - $PAYPAL_API_SANDBOX = $conf->global->PAYPAL_API_SANDBOX; - } - // TODO END problem with triggers - - dol_syslog("Paypal API endpoint ".$API_Endpoint); - - //setting the curl parameters. - $ch = curl_init(); - - /*print $API_Endpoint."-".$API_version."-".$PAYPAL_API_USER."-".$PAYPAL_API_PASSWORD."-".$PAYPAL_API_SIGNATURE."
    "; - print $USE_PROXY."-".$gv_ApiErrorURL."
    "; - print $nvpStr; - exit;*/ - curl_setopt($ch, CURLOPT_URL, $API_Endpoint); - curl_setopt($ch, CURLOPT_VERBOSE, 1); - // TLSv1 by default or change to TLSv1.2 in module configuration - curl_setopt($ch, CURLOPT_SSLVERSION, (empty($conf->global->PAYPAL_SSLVERSION) ? 1 : $conf->global->PAYPAL_SSLVERSION)); - - $ssl_verifypeer = -1; - - // Turning on or off the ssl target certificate - if ($ssl_verifypeer < 0) { - global $dolibarr_main_prod; - $ssl_verifypeer = ($dolibarr_main_prod ? true : false); - } - if (!empty($conf->global->MAIN_CURL_DISABLE_VERIFYPEER)) { - $ssl_verifypeer = 0; - } - - //turning off the server and peer verification(TrustManager Concept). - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ($ssl_verifypeer ? true : false)); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, ($ssl_verifypeer ? true : false)); - - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT); - curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT); - - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POST, 1); - - //if USE_PROXY constant set to true in Constants.php, then only proxy will be enabled. - if ($USE_PROXY) { - dol_syslog("Paypal API hash_call set proxy to ".$PROXY_HOST.":".$PROXY_PORT." - ".$PROXY_USER.":".$PROXY_PASS); - //curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); // Curl 7.10 - curl_setopt($ch, CURLOPT_PROXY, $PROXY_HOST.":".$PROXY_PORT); - if ($PROXY_USER) { - curl_setopt($ch, CURLOPT_PROXYUSERPWD, $PROXY_USER.":".$PROXY_PASS); - } - } - - //NVPRequest for submitting to server - $nvpreq = "METHOD=".urlencode($methodName)."&VERSION=".urlencode($API_version)."&PWD=".urlencode($PAYPAL_API_PASSWORD)."&USER=".urlencode($PAYPAL_API_USER)."&SIGNATURE=".urlencode($PAYPAL_API_SIGNATURE).$nvpStr; - $nvpreq .= "&LOCALECODE=".strtoupper($langs->getDefaultLang(1)); - //$nvpreq.="&BRANDNAME=".urlencode(); // Override merchant name - //$nvpreq.="&NOTIFYURL=".urlencode(); // For Instant Payment Notification url - - - dol_syslog("Paypal API hash_call nvpreq=".$nvpreq); - - //setting the nvpreq as POST FIELD to curl - curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); - - //getting response from server - $response = curl_exec($ch); - - $nvpReqArray = deformatNVP($nvpreq); - $_SESSION['nvpReqArray'] = $nvpReqArray; - - //convrting NVPResponse to an Associative Array - dol_syslog("Paypal API hash_call Response nvpresp=".$response); - $nvpResArray = deformatNVP($response); - - if (curl_errno($ch)) { - // moving to display page to display curl errors - $_SESSION['curl_error_no'] = curl_errno($ch); - $_SESSION['curl_error_msg'] = curl_error($ch); - - //Execute the Error handling module to display errors. - } else { - //closing the curl - curl_close($ch); - } - - return $nvpResArray; -} - - -/** - * This function will take NVPString and convert it to an Associative Array and it will decode the response. - * It is usefull to search for a particular key and displaying arrays. - * - * @param string $nvpstr NVPString - * @return array nvpArray = Associative Array - */ -function deformatNVP($nvpstr) -{ - $intial = 0; - $nvpArray = array(); - - while (strlen($nvpstr)) { - //postion of Key - $keypos = strpos($nvpstr, '='); - //position of value - $valuepos = strpos($nvpstr, '&') ? strpos($nvpstr, '&') : strlen($nvpstr); - - /*getting the Key and Value values and storing in a Associative Array*/ - $keyval = substr($nvpstr, $intial, $keypos); - $valval = substr($nvpstr, $keypos + 1, $valuepos - $keypos - 1); - //decoding the respose - $nvpArray[urldecode($keyval)] = urldecode($valval); - $nvpstr = substr($nvpstr, $valuepos + 1, strlen($nvpstr)); - } - return $nvpArray; -} - -/** - * Get API errors - * - * @return array Array of errors - */ -function getApiError() -{ - $errors = array(); - - $resArray = $_SESSION['reshash']; - - if (isset($_SESSION['curl_error_no'])) { - $errors[] = $_SESSION['curl_error_no'].'-'.$_SESSION['curl_error_msg']; - } - - foreach ($resArray as $key => $value) { - $errors[] = $key.'-'.$value; - } - - return $errors; -} diff --git a/htdocs/paypal/lib/paypalfunctions.lib.php b/htdocs/paypal/lib/paypalfunctions.lib.php deleted file mode 100644 index 713c3043..00000000 --- a/htdocs/paypal/lib/paypalfunctions.lib.php +++ /dev/null @@ -1,81 +0,0 @@ - - * Copyright (C) 2011 Regis Houssin - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/paypal/lib/paypalfunctions.lib.php - * \ingroup paypal - * \brief Page with Paypal init var. - */ - -if (session_id() == "") { - session_start(); - if (ini_get('register_globals')) { // To solve bug in using $_SESSION - foreach ($_SESSION as $key => $value) { - if (isset($GLOBALS[$key])) { - unset($GLOBALS[$key]); - } - } - } -} - -// ================================== -// PayPal Express Checkout Module -// ================================== - -$API_version = "56"; - -/* - ' Define the PayPal Redirect URLs. - ' This is the URL that the buyer is first sent to do authorize payment with their paypal account - ' change the URL depending if you are testing on the sandbox or the live PayPal site - ' - ' For the sandbox, the URL is https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token= - ' For the live site, the URL is https://www.paypal.com/webscr&cmd=_express-checkout&token= - */ -if (!empty($conf->global->PAYPAL_API_SANDBOX) || GETPOST('forcesandbox', 'alpha')) { // We can force sand box with param 'forcesandbox' - $API_Endpoint = "https://api-3t.sandbox.paypal.com/nvp"; - $API_Url = "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token="; -} else { - $API_Endpoint = "https://api-3t.paypal.com/nvp"; - $API_Url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token="; -} - -// Clean parameters -$PAYPAL_API_USER = ""; -if (!empty($conf->global->PAYPAL_API_USER)) { - $PAYPAL_API_USER = $conf->global->PAYPAL_API_USER; -} -$PAYPAL_API_PASSWORD = ""; -if (!empty($conf->global->PAYPAL_API_PASSWORD)) { - $PAYPAL_API_PASSWORD = $conf->global->PAYPAL_API_PASSWORD; -} -$PAYPAL_API_SIGNATURE = ""; -if (!empty($conf->global->PAYPAL_API_SIGNATURE)) { - $PAYPAL_API_SIGNATURE = $conf->global->PAYPAL_API_SIGNATURE; -} -$PAYPAL_API_SANDBOX = ""; -if (!empty($conf->global->PAYPAL_API_SANDBOX)) { - $PAYPAL_API_SANDBOX = $conf->global->PAYPAL_API_SANDBOX; -} - -// Proxy -$PROXY_HOST = $conf->global->MAIN_PROXY_HOST; -$PROXY_PORT = $conf->global->MAIN_PROXY_PORT; -$PROXY_USER = $conf->global->MAIN_PROXY_USER; -$PROXY_PASS = $conf->global->MAIN_PROXY_PASS; -$USE_PROXY = empty($conf->global->MAIN_PROXY_USE) ?false:true; diff --git a/htdocs/stripe/admin/stripe.php b/htdocs/stripe/admin/stripe.php deleted file mode 100644 index 1c5a507b..00000000 --- a/htdocs/stripe/admin/stripe.php +++ /dev/null @@ -1,627 +0,0 @@ - - * Copyright (C) 2017 Olivier Geffroy - * Copyright (C) 2017 Saasprov - * Copyright (C) 2018-2022 Thibault FOUCART - * Copyright (C) 2018 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/stripe/admin/stripe.php - * \ingroup stripe - * \brief Page to setup stripe module - */ - -// Load Dolibarr environment -require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/lib/stripe.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; -require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; - -$servicename = 'Stripe'; - -// Load translation files required by the page -$langs->loadLangs(array('admin', 'other', 'paypal', 'paybox', 'stripe')); - -if (empty($user->admin)) { - accessforbidden(); -} -if (empty($conf->stripe->enabled)) { - accessforbidden(); -} - -$action = GETPOST('action', 'aZ09'); - - -/* - * Actions - */ - -if ($action == 'setvalue' && $user->admin) { - $db->begin(); - - if (empty($conf->stripeconnect->enabled)) { - $result = dolibarr_set_const($db, "STRIPE_TEST_PUBLISHABLE_KEY", GETPOST('STRIPE_TEST_PUBLISHABLE_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_TEST_SECRET_KEY", GETPOST('STRIPE_TEST_SECRET_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_TEST_WEBHOOK_ID", GETPOST('STRIPE_TEST_WEBHOOK_ID', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_TEST_WEBHOOK_KEY", GETPOST('STRIPE_TEST_WEBHOOK_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_LIVE_PUBLISHABLE_KEY", GETPOST('STRIPE_LIVE_PUBLISHABLE_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_LIVE_SECRET_KEY", GETPOST('STRIPE_LIVE_SECRET_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_LIVE_WEBHOOK_ID", GETPOST('STRIPE_LIVE_WEBHOOK_ID', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_LIVE_WEBHOOK_KEY", GETPOST('STRIPE_LIVE_WEBHOOK_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_USER_ACCOUNT_FOR_ACTIONS", GETPOST('STRIPE_USER_ACCOUNT_FOR_ACTIONS', 'int'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS", GETPOST('STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS', 'int'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - if (GETPOSTISSET('STRIPE_LOCATION')) { - $result = dolibarr_set_const($db, "STRIPE_LOCATION", GETPOST('STRIPE_LOCATION', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { - $error++; - } - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - // Stock decrement - //$result = dolibarr_set_const($db, "ONLINE_PAYMENT_WAREHOUSE", (GETPOST('ONLINE_PAYMENT_WAREHOUSE', 'alpha') > 0 ? GETPOST('ONLINE_PAYMENT_WAREHOUSE', 'alpha') : ''), 'chaine', 0, '', $conf->entity); - //if (! $result > 0) - // $error ++; - - // Payment token for URL - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - if (empty($conf->use_javascript_ajax)) { - $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!($result > 0)) { - $error++; - } - } - - if (!$error) { - $db->commit(); - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - $db->rollback(); - dol_print_error($db); - } -} - -if ($action == "setlive") { - $liveenable = GETPOST('value', 'int'); - $res = dolibarr_set_const($db, "STRIPE_LIVE", $liveenable, 'yesno', 0, '', $conf->entity); - if ($res > 0) { - setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); - } else { - setEventMessages($langs->trans("Error"), null, 'errors'); - } -} -//TODO: import script for stripe account saving in alone or connect mode for stripe.class.php - - -/* - * View - */ - -$form = new Form($db); -$formproduct = new FormProduct($db); - -llxHeader('', $langs->trans("StripeSetup")); - -$linkback = ''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("ModuleSetup").' Stripe', $linkback); - -$head = stripeadmin_prepare_head(); - -print '
    '; -print ''; -print ''; - -print dol_get_fiche_head($head, 'stripeaccount', '', -1); - -$stripearrayofwebhookevents = array('account.updated', 'payout.created', 'payout.paid', 'charge.pending', 'charge.refunded', 'charge.succeeded', 'charge.failed', 'payment_intent.succeeded', 'payment_intent.payment_failed', 'payment_method.attached', 'payment_method.updated', 'payment_method.card_automatically_updated', 'payment_method.detached', 'source.chargeable', 'customer.deleted'); - -print ''.$langs->trans("StripeDesc")."
    \n"; - -print '
    '; - -print '
    '; -print ''; -print ''; -print ''; -print ''; -print ''; -print "\n"; - -print ''; -print ''; - -if (empty($conf->stripeconnect->enabled)) { - print ''; - - print ''; - - print ''; -} else { - print ''; - print ''; -} - -if (empty($conf->stripeconnect->enabled)) { - print ''; - - print ''; - - print ''; -} else { - print ''; - print ''; -} - - -print '
    '.$langs->trans("AccountParameter").''.$langs->trans("Value").'
    '; -print $langs->trans("StripeLiveEnabled").''; -if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_LIVE'); -} else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_LIVE", $arrval, $conf->global->STRIPE_LIVE); -} -print '
    '; - print ''.$langs->trans("STRIPE_TEST_PUBLISHABLE_KEY").''; - print ''; - print '
    '; - print ''.$langs->trans("STRIPE_TEST_SECRET_KEY").''; - print ''; - print '
    '; - print ''.$langs->trans("STRIPE_TEST_WEBHOOK_KEY").''; - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - print ''; - print '
    '; - } - print ''; - $out = img_picto('', 'globe').' '.$langs->trans("ToOfferALinkForTestWebhook").' '; - $url = dol_buildpath('/public/stripe/ipn.php?test', 3); - $out .= ''; - $out .= ajax_autoselect("onlinetestwebhookurl", 0); - print '
    '.$out; - print '
    '; - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - if (!empty($conf->global->STRIPE_TEST_WEBHOOK_KEY) && !empty($conf->global->STRIPE_TEST_SECRET_KEY) && !empty($conf->global->STRIPE_TEST_WEBHOOK_ID)) { - \Stripe\Stripe::setApiKey($conf->global->STRIPE_TEST_SECRET_KEY); - $endpoint = \Stripe\WebhookEndpoint::retrieve($conf->global->STRIPE_TEST_WEBHOOK_ID); - $endpoint->enabled_events = $stripearrayofwebhookevents; - if (GETPOST('webhook', 'alpha') == $conf->global->STRIPE_TEST_WEBHOOK_ID) { - if (!GETPOST('status', 'alpha')) { - $endpoint->disabled = true; - } else { - $endpoint->disabled = false; - } - } - $endpoint->url = dol_buildpath('/public/stripe/ipn.php?test', 3); - $endpoint->save(); - if ($endpoint->status == 'enabled') { - print ''; - print img_picto($langs->trans("Activated"), 'switch_on'); - } else { - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); - } - //print $endpoint; - } else { - print img_picto($langs->trans("Inactive"), 'statut5'); - } - } - print'
    '.$langs->trans("StripeConnect").''.$langs->trans("StripeConnect_Mode").'
    '; - print $langs->trans("STRIPE_APPLICATION_FEE_PLATFORM").' '; - print price($conf->global->STRIPE_APPLICATION_FEE_PERCENT); - print '% + '; - print price($conf->global->STRIPE_APPLICATION_FEE); - print ' '.$langs->getCurrencySymbol($conf->currency).' '.$langs->trans("minimum").' '.price($conf->global->STRIPE_APPLICATION_FEE_MINIMAL).' '.$langs->getCurrencySymbol($conf->currency); - print '
    '; - print ''.$langs->trans("STRIPE_LIVE_PUBLISHABLE_KEY").''; - print ''; - print '
    '; - print ''.$langs->trans("STRIPE_LIVE_SECRET_KEY").''; - print ''; - print '
    '; - print ''.$langs->trans("STRIPE_LIVE_WEBHOOK_KEY").''; - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - print ''; - print '
    '; - } - print ''; - $out = img_picto('', 'globe', 'class="pictofixedwidth"').' '.$langs->trans("ToOfferALinkForLiveWebhook").' '; - $url = dol_buildpath('/public/stripe/ipn.php', 3); - $out .= ''; - $out .= ajax_autoselect("onlinelivewebhookurl", 0); - print '
    '.$out; - print '
    '; - if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - if (!empty($conf->global->STRIPE_LIVE_WEBHOOK_KEY) && !empty($conf->global->STRIPE_LIVE_SECRET_KEY) && !empty($conf->global->STRIPE_LIVE_WEBHOOK_ID)) { - \Stripe\Stripe::setApiKey($conf->global->STRIPE_LIVE_SECRET_KEY); - $endpoint = \Stripe\WebhookEndpoint::retrieve($conf->global->STRIPE_LIVE_WEBHOOK_ID); - $endpoint->enabled_events = $stripearrayofwebhookevents; - if (GETPOST('webhook', 'alpha') == $conf->global->STRIPE_LIVE_WEBHOOK_ID) { - if (empty(GETPOST('status', 'alpha'))) { - $endpoint->disabled = true; - } else { - $endpoint->disabled = false; - } - } - $endpoint->url = dol_buildpath('/public/stripe/ipn.php', 3); - $endpoint->save(); - if ($endpoint->status == 'enabled') { - print ''; - print img_picto($langs->trans("Activated"), 'switch_on'); - } else { - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); - } - //print $endpoint; - } else { - print img_picto($langs->trans("Inactive"), 'statut5'); - } - } - print '
    '.$langs->trans("StripeConnect").''.$langs->trans("StripeConnect_Mode").'
    '; -print '
    '; - -print '
    '; - - -print '
    '; -print ''; -print ''; -print ''; -print ''; -print "\n"; - -print ''; - -print ''; - -print ''; - -if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { // What is this for ? - print ''; -} - -// Card Present for Stripe Terminal -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Locations for Stripe Terminal -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate Payment Request API -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate SEPA DIRECT_DEBIT -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate Klarna -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate Bancontact -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate iDEAL -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate Giropay -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -// Activate Sofort -if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code - print ''; -} - -print ''; - -print ''; - -print ''; - -print ''; - -print ''; - -print '
    '.$langs->trans("UsageParameter").''.$langs->trans("Value").'
    '; -print $langs->trans("PublicVendorName").''; -print ''; -print '   '.$langs->trans("Example").': '.$mysoc->name.''; -print '
    '; -print $langs->trans("StripeUserAccountForActions").''; -print img_picto('', 'user', 'class="pictofixedwidth"').$form->select_dolusers(getDolGlobalString('STRIPE_USER_ACCOUNT_FOR_ACTIONS'), 'STRIPE_USER_ACCOUNT_FOR_ACTIONS', 0); -print '
    '; -print $langs->trans("BankAccount").''; -print img_picto('', 'bank_account', 'class="pictofixedwidth"'); -$form->select_comptes(getDolGlobalString('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS'), 'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); -print '
    '; - print $langs->trans("BankAccountForBankTransfer").''; - print img_picto('', 'bank_account', 'class="pictofixedwidth"'); - $form->select_comptes(getDolGlobalString('STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS'), 'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS', 0, '', 1); - print '
    '; - print $langs->trans("STRIPE_CARD_PRESENT").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_CARD_PRESENT'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_CARD_PRESENT", $arrval, $conf->global->STRIPE_CARD_PRESENT); - } - print '
    '; - print $langs->trans("TERMINAL_LOCATION").''; - $service = 'StripeTest'; - $servicestatus = 0; - if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) { - $service = 'StripeLive'; - $servicestatus = 1; - } - global $stripearrayofkeysbyenv; - $site_account = $stripearrayofkeysbyenv[$servicestatus]['secret_key']; - if (!empty($site_account)) { - \Stripe\Stripe::setApiKey($site_account); - } - if (isModEnabled('stripe') && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { - $service = 'StripeTest'; - $servicestatus = '0'; - dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); - } else { - $service = 'StripeLive'; - $servicestatus = '1'; - } - $stripe = new Stripe($db); - if (!empty($site_account)) { - // If $site_account not defined, then key not set and no way to call API Location - $stripeacc = $stripe->getStripeAccount($service); - if ($stripeacc) { - $locations = \Stripe\Terminal\Location::all('', array("stripe_account" => $stripeacc)); - } else { - $locations = \Stripe\Terminal\Location::all(); - } - } - - $location = array(); - $location[""] = $langs->trans("NotDefined"); - foreach ($locations as $tmplocation) { - $location[$tmplocation->id] = $tmplocation->display_name; - } - print $form->selectarray("STRIPE_LOCATION", $location, getDolGlobalString('STRIPE_LOCATION')); - print '
    '; - print $langs->trans("STRIPE_PAYMENT_REQUEST_API").' ?? Not used, what is it for ??'; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_PAYMENT_REQUEST_API'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_PAYMENT_REQUEST_API", $arrval, getDolGlobalString('STRIPE_PAYMENT_REQUEST_API')); - } - print '
    '; - print $langs->trans("STRIPE_SEPA_DIRECT_DEBIT").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_SEPA_DIRECT_DEBIT'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_SEPA_DIRECT_DEBIT", $arrval, getDolGlobalString('STRIPE_SEPA_DIRECT_DEBIT')); - } - print '
    '; - print $langs->trans("STRIPE_KLARNA").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_KLARNA'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_KLARNA", $arrval, $conf->global->STRIPE_KLARNA); - } - print '   '.$langs->trans("ExampleOnlyForKlarnaCustomers").''; - print '
    '; - print $langs->trans("STRIPE_BANCONTACT").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_BANCONTACT'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_BANCONTACT", $arrval, $conf->global->STRIPE_BANCONTACT); - } - print '   '.$langs->trans("ExampleOnlyForBECustomers").''; - print '
    '; - print $langs->trans("STRIPE_IDEAL").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_IDEAL'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_IDEAL", $arrval, $conf->global->STRIPE_SEPA_DIRECT_DEBIT); - } - print '   '.$langs->trans("ExampleOnlyForNLCustomers").''; - print '
    '; - print $langs->trans("STRIPE_GIROPAY").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_GIROPAY'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_GIROPAY", $arrval, $conf->global->STRIPE_GIROPAY); - } - print '   '.$langs->trans("ExampleOnlyForDECustomers").''; - print '
    '; - print $langs->trans("STRIPE_SOFORT").''; - if ($conf->use_javascript_ajax) { - print ajax_constantonoff('STRIPE_SOFORT'); - } else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_SOFORT", $arrval, $conf->global->STRIPE_SOFORT); - } - print '   '.$langs->trans("ExampleOnlyForATBEDEITNLESCustomers").''; - print '
    '; -print $langs->trans("CSSUrlForPaymentForm").''; -print ''; -print '   '.$langs->trans("Example").': http://mysite/mycss.css'; -print '
    '; -print $langs->trans("MessageForm").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_FORM', $conf->global->ONLINE_PAYMENT_MESSAGE_FORM, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageOK").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_OK', $conf->global->ONLINE_PAYMENT_MESSAGE_OK, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("MessageKO").''; -$doleditor = new DolEditor('ONLINE_PAYMENT_MESSAGE_KO', $conf->global->ONLINE_PAYMENT_MESSAGE_KO, '', 100, 'dolibarr_details', 'In', false, true, true, ROWS_2, '90%'); -$doleditor->Create(); -print '
    '; -print $langs->trans("ONLINE_PAYMENT_SENDEMAIL").''; -print img_picto('', 'email', 'class="pictofixedwidth"'); -print ''; -print '   '.$langs->trans("Example").': myemail@myserver.com, Payment service <myemail2@myserver2.com>'; -print '
    '; -print '
    '; - -print '
    '; - -print '
    '; -print ''; - -print ''; -print ''; -print ''; -print "\n"; - -// Payment token for URL -print ''; - -print ''; - -print '
    '.$langs->trans("UrlGenerationParameters").''.$langs->trans("Value").'
    '; -print $langs->trans("SecurityToken").''; -print ''; -if (!empty($conf->use_javascript_ajax)) { - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); -} -if (!empty($conf->global->PAYMENT_SECURITY_ACCEPT_ANY_TOKEN)) { - $langs->load("errors"); - print img_warning($langs->trans("WarningTheHiddenOptionIsOn", 'PAYMENT_SECURITY_ACCEPT_ANY_TOKEN'), '', 'pictowarning marginleftonly'); -} -print '
    '; -print $langs->trans("SecurityTokenIsUnique").''; -if ($conf->use_javascript_ajax) { - print ajax_constantonoff('PAYMENT_SECURITY_TOKEN_UNIQUE', null, null, 0, 0, 1); -} else { - $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("PAYMENT_SECURITY_TOKEN_UNIQUE", $arrval, $conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE); -} -print '
    '; -print '
    '; - -print dol_get_fiche_end(); - -print $form->buttonsSaveCancel("Save", ''); - -print '
    '; - -print '

    '; - - -$token = ''; - -include DOL_DOCUMENT_ROOT.'/core/tpl/onlinepaymentlinks.tpl.php'; - -print info_admin($langs->trans("ExampleOfTestCreditCard", '4242424242424242 (no 3DSecure) or 4000000000003063 (3DSecure required) or 4000002760003184 (3DSecure2 required on all transaction) or 4000003800000446 (3DSecure2 required, the off-session allowed)', '4000000000000101', '4000000000000069', '4000000000000341')); - -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/stripe/ajax/ajax.php b/htdocs/stripe/ajax/ajax.php deleted file mode 100644 index 5fa4da88..00000000 --- a/htdocs/stripe/ajax/ajax.php +++ /dev/null @@ -1,124 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/stripe/ajax/ajax.php - * \brief Ajax action for Stipe ie: Terminal - */ - -if (!defined('NOTOKENRENEWAL')) { - define('NOTOKENRENEWAL', '1'); -} -if (!defined('NOREQUIREMENU')) { - define('NOREQUIREMENU', '1'); -} -if (!defined('NOREQUIREHTML')) { - define('NOREQUIREHTML', '1'); -} -if (!defined('NOREQUIREAJAX')) { - define('NOREQUIREAJAX', '1'); -} -if (!defined('NOBROWSERNOTIF')) { - define('NOBROWSERNOTIF', '1'); -} - -// Load Dolibarr environment -require '../../main.inc.php'; // Load $user and permissions -require_once DOL_DOCUMENT_ROOT.'/includes/stripe/stripe-php/init.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; - -$action = GETPOST('action', 'aZ09'); -$location = GETPOST('location', 'alphanohtml'); -$stripeacc = GETPOST('stripeacc', 'alphanohtml'); -$servicestatus = GETPOST('servicestatus', 'int'); -$amount = GETPOST('amount', 'int'); - -if (empty($user->rights->takepos->run)) { - accessforbidden(); -} - - -/* - * View - */ - -top_httphead('application/json'); - -if ($action == 'getConnexionToken') { - try { - // Be sure to authenticate the endpoint for creating connection tokens. - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$servicestatus]['secret_key']); - // The ConnectionToken's secret lets you connect to any Stripe Terminal reader - // and take payments with your Stripe account. - $array = array(); - if (isset($location) && !empty($location)) $array['location'] = $location; - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - $connectionToken = \Stripe\Terminal\ConnectionToken::create($array); - } else { - $connectionToken = \Stripe\Terminal\ConnectionToken::create($array, array("stripe_account" => $stripeacc)); - } - echo json_encode(array('secret' => $connectionToken->secret)); - } catch (Error $e) { - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); - } -} elseif ($action == 'createPaymentIntent') { - try { - $json_str = file_get_contents('php://input'); - $json_obj = json_decode($json_str); - - // For Terminal payments, the 'payment_method_types' parameter must include - // 'card_present' and the 'capture_method' must be set to 'manual' - $object = new Facture($db); - $object->fetch($json_obj->invoiceid); - $object->fetch_thirdparty(); - - $fulltag='INV='.$object->id.'.CUS='.$object->thirdparty->id; - $tag=null; - $fulltag=dol_string_unaccent($fulltag); - - $stripe = new Stripe($db); - $customer = $stripe->customerStripe($object->thirdparty, $stripeacc, $servicestatus, 1); - - $intent = $stripe->getPaymentIntent($json_obj->amount, $object->multicurrency_code, null, 'Stripe payment: '.$fulltag.(is_object($object)?' ref='.$object->ref:''), $object, $customer, $stripeacc, $servicestatus, 1, 'terminal', false, null, 0, 1); - - echo json_encode(array('client_secret' => $intent->client_secret)); - } catch (Error $e) { - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); - } -} elseif ($action == 'capturePaymentIntent') { - try { - // retrieve JSON from POST body - $json_str = file_get_contents('php://input'); - $json_obj = json_decode($json_str); - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - $intent = \Stripe\PaymentIntent::retrieve($json_obj->id); - } else { - $intent = \Stripe\PaymentIntent::retrieve($json_obj->id, array("stripe_account" => $stripeacc)); - } - $intent = $intent->capture(); - - echo json_encode($intent); - } catch (Error $e) { - http_response_code(500); - echo json_encode(['error' => $e->getMessage()]); - } -} diff --git a/htdocs/stripe/charge.php b/htdocs/stripe/charge.php deleted file mode 100644 index 0aee0c11..00000000 --- a/htdocs/stripe/charge.php +++ /dev/null @@ -1,299 +0,0 @@ - - * Copyright (C) 2019 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// Put here all includes required by your class file - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; -//require_once DOL_DOCUMENT_ROOT.'/core/lib/stripe.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -if (isModEnabled('accounting')) { - require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php'; -} - -// Load translation files required by the page -$langs->loadLangs(array('compta', 'salaries', 'bills', 'hrm', 'stripe')); - -// Security check -$socid = GETPOST("socid", "int"); -if ($user->socid) { - $socid = $user->socid; -} -//$result = restrictedArea($user, 'salaries', '', '', ''); - -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$rowid = GETPOST("rowid", 'alpha'); -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1) { - $page = 0; -} // If $page is not defined, or '' or -1 -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; - -$result = restrictedArea($user, 'banque'); -$optioncss = GETPOST('optioncss', 'alpha'); - -/* - * View - */ - -$form = new Form($db); -$societestatic = new Societe($db); -$memberstatic = new Adherent($db); -$acc = new Account($db); -$stripe = new Stripe($db); - -llxHeader('', $langs->trans("StripeChargeList")); - -if (isModEnabled('stripe') && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { - $service = 'StripeTest'; - $servicestatus = '0'; - dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} else { - $service = 'StripeLive'; - $servicestatus = '1'; -} - -$stripeacc = $stripe->getStripeAccount($service); -/*if (empty($stripeaccount)) -{ - print $langs->trans('ErrorStripeAccountNotDefined'); -}*/ - -if (!$rowid) { - $option = array('limit' => $limit + 1); - $num = 0; - - $param = ''; - $totalnboflines = ''; - $moreforfilter = ''; - $list = null; - if (GETPOSTISSET('starting_after_'.$page)) { - $option['starting_after'] = GETPOST('starting_after_'.$page, 'alphanohtml'); - } - print '
    '; - if ($optioncss != '') { - print ''; - } - - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $title = $langs->trans("StripeChargeList"); - $title .= ($stripeacc ? ' (Stripe connection with Stripe OAuth Connect account '.$stripeacc.')' : ' (Stripe connection with keys from Stripe module setup)'); - - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, '', 'hidepaginationprevious', $limit); - - print '
    '; - print ''."\n"; - - print ''; - print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("StripeCustomerId", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("Customer", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("Origin", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'center '); - print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'left '); - print_liste_field_titre("Paid", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'right '); - print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "", "", "", '', '', '', 'right '); - print "\n"; - - try { - if ($stripeacc) { - $list = \Stripe\Charge::all($option, array("stripe_account" => $stripeacc)); - } else { - $list = \Stripe\Charge::all($option); - } - - $num = count($list->data); - - - //if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); - if ($limit > 0 && $limit != $conf->liste_limit) { - $param .= '&limit='.urlencode($limit); - } - $param .= '&starting_after_'.($page + 1).'='.$list->data[($limit - 1)]->id; - //$param.='&ending_before_'.($page+1).'='.$list->data[($limit-1)]->id; - } catch (Exception $e) { - print ''; - } - - //print $list; - $i = 0; - if (!empty($list)) { - foreach ($list->data as $charge) { - if ($i >= $limit) { - break; - } - - if ($charge->refunded == '1') { - $status = img_picto($langs->trans("refunded"), 'statut6'); - } elseif ($charge->paid == '1') { - $status = img_picto($langs->trans((string) $charge->status), 'statut4'); - } else { - $label = $langs->trans("Message").": ".$charge->failure_message."
    "; - $label .= $langs->trans("Network").": ".$charge->outcome->network_status."
    "; - $label .= $langs->trans("Status").": ".$langs->trans((string) $charge->outcome->seller_message); - $status = $form->textwithpicto(img_picto($langs->trans((string) $charge->status), 'statut8'), $label, -1); - } - - if (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 'card') { - $type = $langs->trans("card"); - } elseif (isset($charge->source->type) && $charge->source->type == 'card') { - $type = $langs->trans("card"); - } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 'three_d_secure') { - $type = $langs->trans("card3DS"); - } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 'sepa_debit') { - $type = $langs->trans("sepadebit"); - } elseif (isset($charge->payment_method_details->type) && $charge->payment_method_details->type == 'ideal') { - $type = $langs->trans("iDEAL"); - } - - // Why this ? - /*if (!empty($charge->payment_intent)) { - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - $charge = \Stripe\PaymentIntent::retrieve($charge->payment_intent); - } else { - $charge = \Stripe\PaymentIntent::retrieve($charge->payment_intent, array("stripe_account" => $stripeacc)); - } - }*/ - - // The metadata FULLTAG is defined by the online payment page - $FULLTAG = $charge->metadata->FULLTAG; - - // Save into $tmparray all metadata - $tmparray = dolExplodeIntoArray($FULLTAG, '.', '='); - // Load origin object according to metadata - if (!empty($tmparray['CUS']) && $tmparray['CUS'] > 0) { - $societestatic->fetch($tmparray['CUS']); - } elseif (!empty($charge->metadata->dol_thirdparty_id) && $charge->metadata->dol_thirdparty_id > 0) { - $societestatic->fetch($charge->metadata->dol_thirdparty_id); - } else { - $societestatic->id = 0; - } - if (!empty($tmparray['MEM']) && $tmparray['MEM'] > 0) { - $memberstatic->fetch($tmparray['MEM']); - } else { - $memberstatic->id = 0; - } - - print ''; - - if (!empty($stripeacc)) { - $connect = $stripeacc.'/'; - } else { - $connect = ''; - } - - // Ref - $url = 'https://dashboard.stripe.com/'.$connect.'test/payments/'.$charge->id; - if ($servicestatus) { - $url = 'https://dashboard.stripe.com/'.$connect.'payments/'.$charge->id; - } - print "\n"; - - // Stripe customer - print "\n"; - - // Link - print "\n"; - - // Origin - print "\n"; - - // Date payment - print '\n"; - // Type - print ''; - // Amount - print '"; - // Status - print '\n"; - - print "\n"; - - $i++; - } - } - - print '
    '.$e->getMessage().'
    "; - print "".img_picto($langs->trans('ShowInStripe'), 'globe')." ".$charge->id.""; - if ($charge->payment_intent) { - print '
    '.$charge->payment_intent.''; - } - print "
    "; - if (isModEnabled('stripe') && !empty($stripeacc)) { - $connect = $stripeacc.'/'; - } - $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$charge->customer; - if ($servicestatus) { - $url = 'https://dashboard.stripe.com/'.$connect.'customers/'.$charge->customer; - } - if (!empty($charge->customer)) { - print ''.img_picto($langs->trans('ShowInStripe'), 'globe').' '.$charge->customer.''; - } - print ""; - if ($societestatic->id > 0) { - print $societestatic->getNomUrl(1); - } elseif ($memberstatic->id > 0) { - print $memberstatic->getNomUrl(1); - } - print ""; - if ($charge->metadata->dol_type == "order" || $charge->metadata->dol_type == "commande") { - $object = new Commande($db); - $object->fetch($charge->metadata->dol_id); - if ($object->id > 0) { - print "".img_picto('', 'order')." ".$object->ref.""; - } else { - print $FULLTAG; - } - } elseif ($charge->metadata->dol_type == "invoice" || $charge->metadata->dol_type == "facture") { - $object = new Facture($db); - $object->fetch($charge->metadata->dol_id); - if ($object->id > 0) { - print "".img_picto('', 'bill')." ".$object->ref.""; - } else { - print $FULLTAG; - } - } else { - print $FULLTAG; - } - print "'.dol_print_date($charge->created, 'dayhour')."'; - print $type; - print ''.price(($charge->amount - $charge->amount_refunded) / 100, 0, '', 1, - 1, - 1, strtoupper($charge->currency))."'; - print $status; - print "
    '; - print '
    '; - print '
    '; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/stripe/class/actions_stripe.class.php b/htdocs/stripe/class/actions_stripe.class.php deleted file mode 100644 index 8e5cd833..00000000 --- a/htdocs/stripe/class/actions_stripe.class.php +++ /dev/null @@ -1,218 +0,0 @@ - - * Copyright (C) 2011 Herve Prot - * Copyright (C) 2014 Philippe Grand - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -// TODO File not used. To remove. - -/** - * \file htdocs/stripe/class/actions_stripe.class.php - * \ingroup stripe - * \brief File Class actionsstripeconnect - */ -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; - - -$langs->load("stripe@stripe"); - - -/** - * Class Actions Stripe Connect - */ -class ActionsStripeconnect -{ - /** - * @var DoliDB Database handler. - */ - public $db; - - private $config = array(); - - // For Hookmanager return - public $resprints; - public $results = array(); - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - - /** - * formObjectOptions - * - * @param array $parameters Parameters - * @param Object $object Object - * @param string $action Action - * @return bool - */ - public function formObjectOptions($parameters, &$object, &$action) - { - global $db, $conf, $user, $langs, $form; - - if (isModEnabled('stripe') && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { - $service = 'StripeTest'; - dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); - } else { - $service = 'StripeLive'; - } - - if (is_array($parameters) && !empty($parameters)) { - foreach ($parameters as $key => $value) { - $key = $value; - } - } - - - if (is_object($object) && $object->element == 'societe') { - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= $langs->trans('StripeCustomer'); - $this->resprints .= ''; - // $this->resprints.= ''.img_edit().''; - $this->resprints .= '
    '; - $this->resprints .= ''; - $this->resprints .= ''; - $stripe = new Stripe($this->db); - if ($stripe->getStripeAccount($service) && $object->client != 0) { - $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); - $this->resprints .= $customer->id; - } else { - $this->resprints .= $langs->trans("NoStripe"); - } - $this->resprints .= ''; - } elseif (is_object($object) && $object->element == 'member') { - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= $langs->trans('StripeCustomer'); - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= ''; - $this->resprints .= ''; - $stripe = new Stripe($this->db); - if ($stripe->getStripeAccount($service) && $object->fk_soc > 0) { - $object->fetch_thirdparty(); - $customer = $stripe->customerStripe($object->thirdparty, $stripe->getStripeAccount($service)); - $this->resprints .= $customer->id; - } else { - $this->resprints .= $langs->trans("NoStripe"); - } - $this->resprints .= ''; - - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= $langs->trans('SubscriptionStripe'); - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= ''; - $this->resprints .= ''; - $stripe = new Stripe($this->db); - if (7 == 4) { - $object->fetch_thirdparty(); - $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); - $this->resprints .= $customer->id; - } else { - $this->resprints .= $langs->trans("NoStripe"); - } - $this->resprints .= ''; - } elseif (is_object($object) && $object->element == 'adherent_type') { - $this->resprints .= ''; - $this->resprints .= '
    '; - $this->resprints .= $langs->trans('PlanStripe'); - $this->resprints .= ''; - // $this->resprints.= ''.img_edit().''; - $this->resprints .= '
    '; - $this->resprints .= ''; - $this->resprints .= ''; - $stripe = new Stripe($this->db); - if (7 == 4) { - $object->fetch_thirdparty(); - $customer = $stripe->customerStripe($object, $stripe->getStripeAccount($service)); - $this->resprints .= $customer->id; - } else { - $this->resprints .= $langs->trans("NoStripe"); - } - $this->resprints .= ''; - } - return 0; - } - - /** - * addMoreActionsButtons - * - * @param array $parameters Parameters - * @param Object $object Object - * @param string $action action - * @return int 0 - */ - public function addMoreActionsButtons($parameters, &$object, &$action) - { - global $db, $conf, $user, $langs, $form; - if (is_object($object) && $object->element == 'facture') { - // On verifie si la facture a des paiements - $sql = 'SELECT pf.amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement_facture as pf'; - $sql .= ' WHERE pf.fk_facture = '.((int) $object->id); - - $totalpaid = 0; - - $result = $this->db->query($sql); - if ($result) { - $i = 0; - $num = $this->db->num_rows($result); - - while ($i < $num) { - $objp = $this->db->fetch_object($result); - $totalpaid += $objp->amount; - $i++; - } - } else { - dol_print_error($this->db, ''); - } - - $resteapayer = $object->total_ttc - $totalpaid; - // Request a direct debit order - if ($object->statut > Facture::STATUS_DRAFT && $object->statut < Facture::STATUS_ABANDONED && $object->paye == 0) { - $stripe = new Stripe($this->db); - if ($resteapayer > 0) { - if ($stripe->getStripeAccount($conf->entity)) { // a modifier avec droit stripe - $langs->load("withdrawals"); - print ''.$langs->trans("StripeConnectPay").''; - } else { - print ''.$langs->trans("StripeConnectPay").''; - } - } elseif ($resteapayer == 0) { - print ''.$langs->trans("StripeConnectPay").''; - } - } else { - print ''.$langs->trans("StripeConnectPay").''; - } - } elseif (is_object($object) && $object->element == 'invoice_supplier') { - print ''.$langs->trans("StripeConnectPay").''; - } elseif (is_object($object) && $object->element == 'member') { - print ''.$langs->trans("StripeAutoSubscription").''; - } - return 0; - } -} diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php deleted file mode 100644 index 7fc11568..00000000 --- a/htdocs/stripe/class/stripe.class.php +++ /dev/null @@ -1,1293 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/config.php'; // This set stripe global env - - -/** - * Stripe class - */ -class Stripe extends CommonObject -{ - /** - * @var int ID - */ - public $rowid; - - /** - * @var int Thirdparty ID - */ - public $fk_soc; - - /** - * @var int ID - */ - public $fk_key; - - /** - * @var int ID - */ - public $id; - - public $mode; - - /** - * @var int Entity - */ - public $entity; - - public $statut; - - public $type; - - public $code; - public $declinecode; - - /** - * @var string Message - */ - public $message; - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - - /** - * Return main company OAuth Connect stripe account - * - * @param string $mode 'StripeTest' or 'StripeLive' - * @param int $fk_soc Id of thirdparty - * @param int $entity Id of entity (-1 = current environment) - * @return string Stripe account 'acc_....' or '' if no OAuth token found - */ - public function getStripeAccount($mode = 'StripeTest', $fk_soc = 0, $entity = -1) - { - global $conf; - - $key = ''; - if ($entity < 0) { - $entity = $conf->entity; - } - - $sql = "SELECT tokenstring"; - $sql .= " FROM ".MAIN_DB_PREFIX."oauth_token"; - $sql .= " WHERE service = '".$this->db->escape($mode)."'"; - $sql .= " AND entity = ".((int) $entity); - if ($fk_soc > 0) { - $sql .= " AND fk_soc = ".((int) $fk_soc); - } else { - $sql .= " AND fk_soc IS NULL"; - } - $sql .= " AND fk_user IS NULL AND fk_adherent IS NULL"; - - dol_syslog(get_class($this)."::getStripeAccount", LOG_DEBUG); - - $result = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); - $tokenstring = $obj->tokenstring; - - $tmparray = json_decode($tokenstring); - $key = empty($tmparray->stripe_user_id) ? '' : $tmparray->stripe_user_id; - } else { - $tokenstring = ''; - } - } else { - dol_print_error($this->db); - } - - dol_syslog("No dedicated Stripe Connect account available for entity ".$conf->entity); - return $key; - } - - /** - * getStripeCustomerAccount - * - * @param int $id Id of third party - * @param int $status Status - * @param string $site_account Value to use to identify with account to use on site when site can offer several accounts. For example: 'pk_live_123456' when using Stripe service. - * @return string Stripe customer ref 'cu_xxxxxxxxxxxxx' or '' - */ - public function getStripeCustomerAccount($id, $status = 0, $site_account = '') - { - include_once DOL_DOCUMENT_ROOT.'/societe/class/societeaccount.class.php'; - $societeaccount = new SocieteAccount($this->db); - return $societeaccount->getCustomerAccount($id, 'stripe', $status, $site_account); // Get thirdparty cus_... - } - - - /** - * Get the Stripe customer of a thirdparty (with option to create it in Stripe if not linked yet). - * Search on site_account = 0 or = $stripearrayofkeysbyenv[$status]['publishable_key'] - * - * @param Societe $object Object thirdparty to check, or create on stripe (create on stripe also update the stripe_account table for current entity) - * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @param int $createifnotlinkedtostripe 1=Create the stripe customer and the link if the thirdparty is not yet linked to a stripe customer - * @return \Stripe\StripeCustomer|null Stripe Customer or null if not found - */ - public function customerStripe(Societe $object, $key = '', $status = 0, $createifnotlinkedtostripe = 0) - { - global $conf, $user; - - if (empty($object->id)) { - dol_syslog("customerStripe is called with the parameter object that is not loaded"); - return null; - } - - $customer = null; - - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - $sql = "SELECT sa.key_account as key_account, sa.entity"; // key_account is cus_.... - $sql .= " FROM ".MAIN_DB_PREFIX."societe_account as sa"; - $sql .= " WHERE sa.fk_soc = ".((int) $object->id); - $sql .= " AND sa.entity IN (".getEntity('societe').")"; - $sql .= " AND sa.site = 'stripe' AND sa.status = ".((int) $status); - $sql .= " AND (sa.site_account IS NULL OR sa.site_account = '' OR sa.site_account = '".$this->db->escape($stripearrayofkeysbyenv[$status]['publishable_key'])."')"; - $sql .= " AND sa.key_account IS NOT NULL AND sa.key_account <> ''"; - - dol_syslog(get_class($this)."::customerStripe search stripe customer id for thirdparty id=".$object->id, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) { - $obj = $this->db->fetch_object($resql); - $tiers = $obj->key_account; - - dol_syslog(get_class($this)."::customerStripe found stripe customer key_account = ".$tiers.". We will try to read it on Stripe with publishable_key = ".$stripearrayofkeysbyenv[$status]['publishable_key']); - - try { - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - //$customer = \Stripe\Customer::retrieve("$tiers"); - $customer = \Stripe\Customer::retrieve(array('id'=>"$tiers", 'expand[]'=>'sources')); - } else { - //$customer = \Stripe\Customer::retrieve("$tiers", array("stripe_account" => $key)); - $customer = \Stripe\Customer::retrieve(array('id'=>"$tiers", 'expand[]'=>'sources'), array("stripe_account" => $key)); - } - } catch (Exception $e) { - // For exemple, we may have error: 'No such customer: cus_XXXXX; a similar object exists in live mode, but a test mode key was used to make this request.' - $this->error = $e->getMessage(); - } - } elseif ($createifnotlinkedtostripe) { - $ipaddress = getUserRemoteIP(); - - $dataforcustomer = array( - "email" => $object->email, - "description" => $object->name, - "metadata" => array('dol_id'=>$object->id, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>$ipaddress) - ); - - $vatcleaned = $object->tva_intra ? $object->tva_intra : null; - - /* - $taxinfo = array('type'=>'vat'); - if ($vatcleaned) - { - $taxinfo["tax_id"] = $vatcleaned; - } - // We force data to "null" if not defined as expected by Stripe - if (empty($vatcleaned)) $taxinfo=null; - $dataforcustomer["tax_info"] = $taxinfo; - */ - - //$a = \Stripe\Stripe::getApiKey(); - //var_dump($a);var_dump($key);exit; - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - $customer = \Stripe\Customer::create($dataforcustomer); - } else { - $customer = \Stripe\Customer::create($dataforcustomer, array("stripe_account" => $key)); - } - - // Create the VAT record in Stripe - if (!empty($conf->global->STRIPE_SAVE_TAX_IDS)) { // We setup to save Tax info on Stripe side. Warning: This may result in error when saving customer - if (!empty($vatcleaned)) { - $isineec = isInEEC($object); - if ($object->country_code && $isineec) { - //$taxids = $customer->allTaxIds($customer->id); - $customer->createTaxId($customer->id, array('type'=>'eu_vat', 'value'=>$vatcleaned)); - } - } - } - - // Create customer in Dolibarr - $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_account (fk_soc, login, key_account, site, site_account, status, entity, date_creation, fk_user_creat)"; - $sql .= " VALUES (".((int) $object->id).", '', '".$this->db->escape($customer->id)."', 'stripe', '".$this->db->escape($stripearrayofkeysbyenv[$status]['publishable_key'])."', ".((int) $status).", ".((int) $conf->entity).", '".$this->db->idate(dol_now())."', ".((int) $user->id).")"; - $resql = $this->db->query($sql); - if (!$resql) { - $this->error = $this->db->lasterror(); - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - } - } - } else { - dol_print_error($this->db); - } - - return $customer; - } - - /** - * Get the Stripe payment method Object from its ID - * - * @param string $paymentmethod Payment Method ID - * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @return \Stripe\PaymentMethod|null Stripe PaymentMethod or null if not found - */ - public function getPaymentMethodStripe($paymentmethod, $key = '', $status = 0) - { - $stripepaymentmethod = null; - - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - $stripepaymentmethod = \Stripe\PaymentMethod::retrieve(''.$paymentmethod->id.''); - } else { - $stripepaymentmethod = \Stripe\PaymentMethod::retrieve(''.$paymentmethod->id.'', array("stripe_account" => $key)); - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - } - - return $stripepaymentmethod; - } - - /** - * Get the Stripe reader Object from its ID - * - * @param string $reader Reader ID - * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @return \Stripe\Terminal\Reader|null Stripe Reader or null if not found - */ - public function getSelectedReader($reader, $key = '', $status = 0) - { - $selectedreader = null; - - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - $selectedreader = \Stripe\Terminal\Reader::retrieve(''.$reader.''); - } else { - $stripepaymentmethod = \Stripe\Terminal\Reader::retrieve(''.$reader.'', array("stripe_account" => $key)); - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - } - - return $selectedreader; - } - - /** - * Get the Stripe payment intent. Create it with confirmnow=false - * Warning. If a payment was tried and failed, a payment intent was created. - * But if we change something on object to pay (amount or other), reusing same payment intent is not allowed by Stripe. - * Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), - * that's why i comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) - * Note: This is used when option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on when making a payment from the public/payment/newpayment.php page - * but not when using the STRIPE_USE_NEW_CHECKOUT. - * - * @param double $amount Amount - * @param string $currency_code Currency code - * @param string $tag Tag - * @param string $description Description - * @param mixed $object Object to pay with Stripe - * @param string $customer Stripe customer ref 'cus_xxxxxxxxxxxxx' via customerStripe() - * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @param int $usethirdpartyemailforreceiptemail 1=use thirdparty email for receipt - * @param int $mode automatic=automatic confirmation/payment when conditions are ok, manual=need to call confirm() on intent - * @param boolean $confirmnow false=default, true=try to confirm immediatly after create (if conditions are ok) - * @param string $payment_method 'pm_....' (if known) - * @param string $off_session If we use an already known payment method to pay when customer is not available during the checkout flow. - * @param string $noidempotency_key Do not use the idempotency_key when creating the PaymentIntent - * @return \Stripe\PaymentIntent|null Stripe PaymentIntent or null if not found and failed to create - */ - public function getPaymentIntent($amount, $currency_code, $tag, $description = '', $object = null, $customer = null, $key = null, $status = 0, $usethirdpartyemailforreceiptemail = 0, $mode = 'automatic', $confirmnow = false, $payment_method = null, $off_session = 0, $noidempotency_key = 1) - { - global $conf, $user; - - dol_syslog(get_class($this)."::getPaymentIntent", LOG_INFO, 1); - - $error = 0; - - if (empty($status)) { - $service = 'StripeTest'; - } else { - $service = 'StripeLive'; - } - - $arrayzerounitcurrency = array('BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'); - if (!in_array($currency_code, $arrayzerounitcurrency)) { - $stripeamount = $amount * 100; - } else { - $stripeamount = $amount; - } - - $fee = $amount * ($conf->global->STRIPE_APPLICATION_FEE_PERCENT / 100) + $conf->global->STRIPE_APPLICATION_FEE; - if ($fee >= $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL && $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL > $conf->global->STRIPE_APPLICATION_FEE_MINIMAL) { - $fee = $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL; - } elseif ($fee < $conf->global->STRIPE_APPLICATION_FEE_MINIMAL) { - $fee = $conf->global->STRIPE_APPLICATION_FEE_MINIMAL; - } - if (!in_array($currency_code, $arrayzerounitcurrency)) { - $stripefee = round($fee * 100); - } else { - $stripefee = round($fee); - } - - $paymentintent = null; - - if (is_object($object) && getDolGlobalInt('STRIPE_REUSE_EXISTING_INTENT_IF_FOUND') && !getDolGlobalInt('STRIPE_CARD_PRESENT')) { - // Warning. If a payment was tried and failed, a payment intent was created. - // But if we change something on object to pay (amount or other that does not change the idempotency key), reusing same payment intent is not allowed by Stripe. - // Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed by Stripe after a delay), Stripe will - // automatically return the existing payment intent if idempotency is provided when we try to create the new one. - // That's why we can comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) - - $sql = "SELECT pi.ext_payment_id, pi.entity, pi.fk_facture, pi.sourcetype, pi.ext_payment_site"; - $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pi"; - $sql .= " WHERE pi.fk_facture = ".((int) $object->id); - $sql .= " AND pi.sourcetype = '".$this->db->escape($object->element)."'"; - $sql .= " AND pi.entity IN (".getEntity('societe').")"; - $sql .= " AND pi.ext_payment_site = '".$this->db->escape($service)."'"; - - dol_syslog(get_class($this)."::getPaymentIntent search stripe payment intent for object id = ".$object->id, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) { - $obj = $this->db->fetch_object($resql); - $intent = $obj->ext_payment_id; - - dol_syslog(get_class($this)."::getPaymentIntent found existing payment intent record"); - - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - try { - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - $paymentintent = \Stripe\PaymentIntent::retrieve($intent); - } else { - $paymentintent = \Stripe\PaymentIntent::retrieve($intent, array("stripe_account" => $key)); - } - } catch (Exception $e) { - $error++; - $this->error = $e->getMessage(); - } - } - } - } - - if (empty($paymentintent)) { - // Try to create intent. See https://stripe.com/docs/api/payment_intents/create - $ipaddress = getUserRemoteIP(); - $metadata = array('dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>$ipaddress); - if (is_object($object)) { - $metadata['dol_type'] = $object->element; - $metadata['dol_id'] = $object->id; - if (is_object($object->thirdparty) && $object->thirdparty->id > 0) { - $metadata['dol_thirdparty_id'] = $object->thirdparty->id; - } - } - - // list of payment method types - $paymentmethodtypes = array("card"); - $descriptor = dol_trunc($tag, 10, 'right', 'UTF-8', 1); - if (getDolGlobalInt('STRIPE_SEPA_DIRECT_DEBIT')) { - $paymentmethodtypes[] = "sepa_debit"; //&& ($object->thirdparty->isInEEC()) - //$descriptor = preg_replace('/ref=[^:=]+/', '', $descriptor); // Clean ref - } - if (getDolGlobalInt('STRIPE_KLARNA')) { - $paymentmethodtypes[] = "klarna"; - } - if (getDolGlobalInt('STRIPE_BANCONTACT')) { - $paymentmethodtypes[] = "bancontact"; - } - if (getDolGlobalInt('STRIPE_IDEAL')) { - $paymentmethodtypes[] = "ideal"; - } - if (getDolGlobalInt('STRIPE_GIROPAY')) { - $paymentmethodtypes[] = "giropay"; - } - if (getDolGlobalInt('STRIPE_SOFORT')) { - $paymentmethodtypes[] = "sofort"; - } - if (getDolGlobalInt('STRIPE_CARD_PRESENT') && $mode == 'terminal') { - $paymentmethodtypes = array("card_present"); - } - - $dataforintent = array( - "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent - "confirmation_method" => $mode, - "amount" => $stripeamount, - "currency" => $currency_code, - "payment_method_types" => $paymentmethodtypes, - "description" => $description, - //"save_payment_method" => true, - "setup_future_usage" => "on_session", - "metadata" => $metadata - ); - if ($descriptor) { - $dataforintent["statement_descriptor_suffix"] = $descriptor; // For card payment, 22 chars that appears on bank receipt (prefix into stripe setup + this suffix) - $dataforintent["statement_descriptor"] = $descriptor; // For SEPA, it will take only statement_descriptor, not statement_descriptor_suffix - } - if (!is_null($customer)) { - $dataforintent["customer"] = $customer; - } - // payment_method = - // payment_method_types = array('card') - //var_dump($dataforintent); - if ($off_session) { - unset($dataforintent['setup_future_usage']); - // We can't use both "setup_future_usage" = "off_session" and "off_session" = true. - // Because $off_session parameter is dedicated to create paymentintent off_line (and not future payment), we need to use "off_session" = true. - //$dataforintent["setup_future_usage"] = "off_session"; - $dataforintent["off_session"] = true; - } - if (getDolGlobalInt('STRIPE_GIROPAY')) { - unset($dataforintent['setup_future_usage']); - } - if (getDolGlobalInt('STRIPE_KLARNA')) { - unset($dataforintent['setup_future_usage']); - } - if (getDolGlobalInt('STRIPE_CARD_PRESENT') && $mode == 'terminal') { - unset($dataforintent['setup_future_usage']); - $dataforintent["capture_method"] = "manual"; - $dataforintent["confirmation_method"] = "manual"; - } - if (!is_null($payment_method)) { - $dataforintent["payment_method"] = $payment_method; - $description .= ' - '.$payment_method; - } - - if ($conf->entity != getDolGlobalInt('STRIPECONNECT_PRINCIPAL') && $stripefee > 0) { - $dataforintent["application_fee_amount"] = $stripefee; - } - if ($usethirdpartyemailforreceiptemail && is_object($object) && $object->thirdparty->email) { - $dataforintent["receipt_email"] = $object->thirdparty->email; - } - - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - $arrayofoptions = array(); - if (empty($noidempotency_key)) { - $arrayofoptions["idempotency_key"] = $description; - } - // Note: If all data for payment intent are same than a previous on, even if we use 'create', Stripe will return ID of the old existing payment intent. - if (!empty($key)) { // If the Stripe connect account not set, we use common API usage - $arrayofoptions["stripe_account"] = $key; - } - - dol_syslog("dataforintent to create paymentintent = ".var_export($dataforintent, true)); - - $paymentintent = \Stripe\PaymentIntent::create($dataforintent, $arrayofoptions); - - // Store the payment intent - if (is_object($object)) { - $paymentintentalreadyexists = 0; - // Check that payment intent $paymentintent->id is not already recorded. - $sql = "SELECT pi.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pi"; - $sql .= " WHERE pi.entity IN (".getEntity('societe').")"; - $sql .= " AND pi.ext_payment_site = '".$this->db->escape($service)."'"; - $sql .= " AND pi.ext_payment_id = '".$this->db->escape($paymentintent->id)."'"; - - dol_syslog(get_class($this)."::getPaymentIntent search if payment intent already in prelevement_demande", LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) { - $obj = $this->db->fetch_object($resql); - if ($obj) { - $paymentintentalreadyexists++; - } - } - } else { - dol_print_error($this->db); - } - - // If not, we create it. - if (!$paymentintentalreadyexists) { - $now = dol_now(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_demande (date_demande, fk_user_demande, ext_payment_id, fk_facture, sourcetype, entity, ext_payment_site, amount)"; - $sql .= " VALUES ('".$this->db->idate($now)."', ".((int) $user->id).", '".$this->db->escape($paymentintent->id)."', ".((int) $object->id).", '".$this->db->escape($object->element)."', ".((int) $conf->entity).", '".$this->db->escape($service)."', ".((float) $amount).")"; - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->error = $this->db->lasterror(); - dol_syslog(get_class($this)."::PaymentIntent failed to insert paymentintent with id=".$paymentintent->id." into database.", LOG_ERR); - } - } - } else { - $_SESSION["stripe_payment_intent"] = $paymentintent; - } - } catch (Stripe\Error\Card $e) { - $error++; - $this->error = $e->getMessage(); - $this->code = $e->getStripeCode(); - $this->declinecode = $e->getDeclineCode(); - } catch (Exception $e) { - //var_dump($dataforintent); - //var_dump($description); - //var_dump($key); - //var_dump($paymentintent); - //var_dump($e->getMessage()); - //var_dump($e); - $error++; - $this->error = $e->getMessage(); - $this->code = ''; - $this->declinecode = ''; - } - } - - dol_syslog(get_class($this)."::getPaymentIntent return error=".$error." this->error=".$this->error, LOG_INFO, -1); - - if (!$error) { - return $paymentintent; - } else { - return null; - } - } - - /** - * Get the Stripe payment intent. Create it with confirmnow=false - * Warning. If a payment was tried and failed, a payment intent was created. - * But if we change something on object to pay (amount or other), reusing same payment intent is not allowed. - * Recommanded solution is to recreate a new payment intent each time we need one (old one will be automatically closed after a delay), - * that's why i comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) - * Note: This is used when option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on when making a payment from the public/payment/newpayment.php page - * but not when using the STRIPE_USE_NEW_CHECKOUT. - * - * @param string $description Description - * @param Societe $object Object to pay with Stripe - * @param string $customer Stripe customer ref 'cus_xxxxxxxxxxxxx' via customerStripe() - * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @param int $usethirdpartyemailforreceiptemail 1=use thirdparty email for receipt - * @param boolean $confirmnow false=default, true=try to confirm immediatly after create (if conditions are ok) - * @return \Stripe\SetupIntent|null Stripe SetupIntent or null if not found and failed to create - */ - public function getSetupIntent($description, $object, $customer, $key, $status, $usethirdpartyemailforreceiptemail = 0, $confirmnow = false) - { - global $conf; - - dol_syslog("getSetupIntent description=".$description.' confirmnow='.$confirmnow, LOG_INFO, 1); - - $error = 0; - - if (empty($status)) { - $service = 'StripeTest'; - } else { - $service = 'StripeLive'; - } - - $setupintent = null; - - if (empty($setupintent)) { - $ipaddress = getUserRemoteIP(); - $metadata = array('dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>$ipaddress); - if (is_object($object)) { - $metadata['dol_type'] = $object->element; - $metadata['dol_id'] = $object->id; - if (is_object($object->thirdparty) && $object->thirdparty->id > 0) { - $metadata['dol_thirdparty_id'] = $object->thirdparty->id; - } - } - - // list of payment method types - $paymentmethodtypes = array("card"); - if (!empty($conf->global->STRIPE_SEPA_DIRECT_DEBIT)) { - $paymentmethodtypes[] = "sepa_debit"; //&& ($object->thirdparty->isInEEC()) - } - if (!empty($conf->global->STRIPE_BANCONTACT)) { - $paymentmethodtypes[] = "bancontact"; - } - if (!empty($conf->global->STRIPE_IDEAL)) { - $paymentmethodtypes[] = "ideal"; - } - // Giropay not possible for setup intent - if (!empty($conf->global->STRIPE_SOFORT)) { - $paymentmethodtypes[] = "sofort"; - } - - $dataforintent = array( - "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent - "payment_method_types" => $paymentmethodtypes, - "usage" => "off_session", - "metadata" => $metadata - ); - if (!is_null($customer)) { - $dataforintent["customer"] = $customer; - } - if (!is_null($description)) { - $dataforintent["description"] = $description; - } - // payment_method = - // payment_method_types = array('card') - //var_dump($dataforintent); - - if ($usethirdpartyemailforreceiptemail && is_object($object) && $object->thirdparty->email) { - $dataforintent["receipt_email"] = $object->thirdparty->email; - } - - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - dol_syslog("getSetupIntent ".$stripearrayofkeysbyenv[$status]['publishable_key'], LOG_DEBUG); - - // Note: If all data for payment intent are same than a previous on, even if we use 'create', Stripe will return ID of the old existing payment intent. - if (empty($key)) { // If the Stripe connect account not set, we use common API usage - //$setupintent = \Stripe\SetupIntent::create($dataforintent, array("idempotency_key" => "$description")); - $setupintent = \Stripe\SetupIntent::create($dataforintent, array()); - } else { - //$setupintent = \Stripe\SetupIntent::create($dataforintent, array("idempotency_key" => "$description", "stripe_account" => $key)); - $setupintent = \Stripe\SetupIntent::create($dataforintent, array("stripe_account" => $key)); - } - //var_dump($setupintent->id); - - // Store the setup intent - /*if (is_object($object)) - { - $setupintentalreadyexists = 0; - // Check that payment intent $setupintent->id is not already recorded. - $sql = "SELECT pi.rowid"; - $sql.= " FROM " . MAIN_DB_PREFIX . "prelevement_demande as pi"; - $sql.= " WHERE pi.entity IN (".getEntity('societe').")"; - $sql.= " AND pi.ext_payment_site = '" . $this->db->escape($service) . "'"; - $sql.= " AND pi.ext_payment_id = '".$this->db->escape($setupintent->id)."'"; - - dol_syslog(get_class($this) . "::getPaymentIntent search if payment intent already in prelevement_demande", LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) - { - $obj = $this->db->fetch_object($resql); - if ($obj) $setupintentalreadyexists++; - } - } - else dol_print_error($this->db); - - // If not, we create it. - if (! $setupintentalreadyexists) - { - $now=dol_now(); - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "prelevement_demande (date_demande, fk_user_demande, ext_payment_id, fk_facture, sourcetype, entity, ext_payment_site)"; - $sql .= " VALUES ('".$this->db->idate($now)."', ".((int) $user->id).", '".$this->db->escape($setupintent->id)."', ".((int) $object->id).", '".$this->db->escape($object->element)."', " . ((int) $conf->entity) . ", '" . $this->db->escape($service) . "', ".((float) $amount).")"; - $resql = $this->db->query($sql); - if (! $resql) - { - $error++; - $this->error = $this->db->lasterror(); - dol_syslog(get_class($this) . "::PaymentIntent failed to insert paymentintent with id=".$setupintent->id." into database."); - } - } - } - else - { - $_SESSION["stripe_setup_intent"] = $setupintent; - }*/ - } catch (Exception $e) { - //var_dump($dataforintent); - //var_dump($description); - //var_dump($key); - //var_dump($setupintent); - //var_dump($e->getMessage()); - $error++; - $this->error = $e->getMessage(); - } - } - - if (!$error) { - dol_syslog("getSetupIntent ".(is_object($setupintent) ? $setupintent->id : ''), LOG_INFO, -1); - return $setupintent; - } else { - dol_syslog("getSetupIntent return error=".$error, LOG_INFO, -1); - return null; - } - } - - - /** - * Get the Stripe card of a company payment mode (option to create it on Stripe if not linked yet is no more available on new Stripe API) - * - * @param \Stripe\StripeCustomer $cu Object stripe customer. - * @param CompanyPaymentMode $object Object companypaymentmode to check, or create on stripe (create on stripe also update the societe_rib table for current entity) - * @param string $stripeacc ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @param int $createifnotlinkedtostripe 1=Create the stripe card and the link if the card is not yet linked to a stripe card. Deprecated with new Stripe API and SCA. - * @return \Stripe\StripeCard|\Stripe\PaymentMethod|null Stripe Card or null if not found - */ - public function cardStripe($cu, CompanyPaymentMode $object, $stripeacc = '', $status = 0, $createifnotlinkedtostripe = 0) - { - global $conf, $user, $langs; - - $card = null; - - $sql = "SELECT sa.stripe_card_ref, sa.proprio, sa.exp_date_month, sa.exp_date_year, sa.number, sa.cvn"; // stripe_card_ref is card_.... - $sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as sa"; - $sql .= " WHERE sa.rowid = ".((int) $object->id); // We get record from ID, no need for filter on entity - $sql .= " AND sa.type = 'card'"; - - dol_syslog(get_class($this)."::cardStripe search stripe card id for paymentmode id=".$object->id.", stripeacc=".$stripeacc.", status=".$status.", createifnotlinkedtostripe=".$createifnotlinkedtostripe, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) { - $obj = $this->db->fetch_object($resql); - $cardref = $obj->stripe_card_ref; - dol_syslog(get_class($this)."::cardStripe cardref=".$cardref); - if ($cardref) { - try { - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - if (!preg_match('/^pm_/', $cardref) && !empty($cu->sources)) { - $card = $cu->sources->retrieve($cardref); - } else { - $card = \Stripe\PaymentMethod::retrieve($cardref); - } - } else { - if (!preg_match('/^pm_/', $cardref) && !empty($cu->sources)) { - //$card = $cu->sources->retrieve($cardref, array("stripe_account" => $stripeacc)); // this API fails when array stripe_account is provided - $card = $cu->sources->retrieve($cardref); - } else { - //$card = \Stripe\PaymentMethod::retrieve($cardref, array("stripe_account" => $stripeacc)); // Don't know if this works - $card = \Stripe\PaymentMethod::retrieve($cardref); - } - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($this->error, LOG_WARNING); - } - } elseif ($createifnotlinkedtostripe) { - $exp_date_month = $obj->exp_date_month; - $exp_date_year = $obj->exp_date_year; - $number = $obj->number; - $cvc = $obj->cvn; // cvn in database, cvc for stripe - $cardholdername = $obj->proprio; - - $ipaddress = getUserRemoteIP(); - - $dataforcard = array( - "source" => array('object'=>'card', 'exp_month'=>$exp_date_month, 'exp_year'=>$exp_date_year, 'number'=>$number, 'cvc'=>$cvc, 'name'=>$cardholdername), - "metadata" => array('dol_id'=>$object->id, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>$ipaddress) - ); - - //$a = \Stripe\Stripe::getApiKey(); - //var_dump($a); - //var_dump($stripeacc);exit; - try { - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - if (empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { - dol_syslog("Try to create card with dataforcard = ".json_encode($dataforcard)); - $card = $cu->sources->create($dataforcard); - if (!$card) { - $this->error = 'Creation of card on Stripe has failed'; - } - } else { - $connect = ''; - if (!empty($stripeacc)) { - $connect = $stripeacc.'/'; - } - $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; - if ($status) { - $url = 'https://dashboard.stripe.com/'.$connect.'customers/'.$cu->id; - } - $urtoswitchonstripe = ' '.img_picto($langs->trans('ShowInStripe'), 'globe').''; - - //dol_syslog("Error: This case is not supported", LOG_ERR); - $this->error = $langs->trans('CreationOfPaymentModeMustBeDoneFromStripeInterface', $urtoswitchonstripe); - } - } else { - if (empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { - dol_syslog("Try to create card with dataforcard = ".json_encode($dataforcard)); - $card = $cu->sources->create($dataforcard, array("stripe_account" => $stripeacc)); - if (!$card) { - $this->error = 'Creation of card on Stripe has failed'; - } - } else { - $connect = ''; - if (!empty($stripeacc)) { - $connect = $stripeacc.'/'; - } - $url = 'https://dashboard.stripe.com/'.$connect.'test/customers/'.$cu->id; - if ($status) { - $url = 'https://dashboard.stripe.com/'.$connect.'customers/'.$cu->id; - } - $urtoswitchonstripe = ' '.img_picto($langs->trans('ShowInStripe'), 'globe').''; - - //dol_syslog("Error: This case is not supported", LOG_ERR); - $this->error = $langs->trans('CreationOfPaymentModeMustBeDoneFromStripeInterface', $urtoswitchonstripe); - } - } - - if ($card) { - $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib"; - $sql .= " SET stripe_card_ref = '".$this->db->escape($card->id)."', card_type = '".$this->db->escape($card->brand)."',"; - $sql .= " country_code = '".$this->db->escape($card->country)."',"; - $sql .= " approved = ".($card->cvc_check == 'pass' ? 1 : 0); - $sql .= " WHERE rowid = ".((int) $object->id); - $sql .= " AND type = 'card'"; - $resql = $this->db->query($sql); - if (!$resql) { - $this->error = $this->db->lasterror(); - } - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($this->error, LOG_WARNING); - } - } - } - } else { - dol_print_error($this->db); - } - - return $card; - } - - - /** - * Get the Stripe SEPA of a company payment mode - * - * @param \Stripe\StripeCustomer $cu Object stripe customer. - * @param CompanyPaymentMode $object Object companypaymentmode to check, or create on stripe (create on stripe also update the societe_rib table for current entity) - * @param string $stripeacc ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect - * @param int $status Status (0=test, 1=live) - * @param int $createifnotlinkedtostripe 1=Create the stripe sepa and the link if the sepa is not yet linked to a stripe sepa. Deprecated with new Stripe API and SCA. - * @return \Stripe\PaymentMethod|null Stripe SEPA or null if not found - */ - public function sepaStripe($cu, CompanyPaymentMode $object, $stripeacc = '', $status = 0, $createifnotlinkedtostripe = 0) - { - global $conf, $user, $langs; - $sepa = null; - - $sql = "SELECT sa.stripe_card_ref, sa.proprio, sa.iban_prefix"; // stripe_card_ref is src_ for sepa - $sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as sa"; - $sql .= " WHERE sa.rowid = ".((int) $object->id); // We get record from ID, no need for filter on entity - $sql .= " AND sa.type = 'ban'"; //type ban to get normal bank account of customer (prelevement) - - $soc = new Societe($this->db); - $soc->fetch($object->fk_soc); - - dol_syslog(get_class($this)."::sepaStripe search stripe ban id for paymentmode id=".$object->id.", stripeacc=".$stripeacc.", status=".$status.", createifnotlinkedtostripe=".$createifnotlinkedtostripe, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - if ($num) { - $obj = $this->db->fetch_object($resql); - $cardref = $obj->stripe_card_ref; - dol_syslog(get_class($this)."::sepaStripe cardref=".$cardref); - if ($cardref) { - try { - if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage - if (!preg_match('/^pm_/', $cardref) && !empty($cu->sources)) { - $sepa = $cu->sources->retrieve($cardref); - } else { - $sepa = \Stripe\PaymentMethod::retrieve($cardref); - } - } else { - if (!preg_match('/^pm_/', $cardref) && !empty($cu->sources)) { - //$sepa = $cu->sources->retrieve($cardref, array("stripe_account" => $stripeacc)); // this API fails when array stripe_account is provided - $sepa = $cu->sources->retrieve($cardref); - } else { - //$sepa = \Stripe\PaymentMethod::retrieve($cardref, array("stripe_account" => $stripeacc)); // Don't know if this works - $sepa = \Stripe\PaymentMethod::retrieve($cardref); - } - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($this->error, LOG_WARNING); - } - } elseif ($createifnotlinkedtostripe) { - $iban = $obj->iban_prefix; //prefix ? - $ipaddress = getUserRemoteIP(); - - $dataforcard = array( - 'type'=>'sepa_debit', - "sepa_debit" => array('iban' => $iban), - 'currency' => 'eur', - 'usage' => 'reusable', - 'owner' => array( - 'name' => $soc->name, - ), - "metadata" => array('dol_id'=>$object->id, 'dol_version'=>DOL_VERSION, 'dol_entity'=>$conf->entity, 'ipaddress'=>$ipaddress) - ); - - //$a = \Stripe\Stripe::getApiKey(); - //var_dump($a);var_dump($stripeacc);exit; - try { - dol_syslog("Try to create sepa_debit 0"); - - $service = 'StripeTest'; - $servicestatus = 0; - if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) { - $service = 'StripeLive'; - $servicestatus = 1; - } - // Force to use the correct API key - global $stripearrayofkeysbyenv; - $stripeacc = $stripearrayofkeysbyenv[$servicestatus]['secret_key']; - - dol_syslog("Try to create sepa_debit with data = ".json_encode($dataforcard)); - $s = new \Stripe\StripeClient($stripeacc); - $sepa = $s->sources->create($dataforcard); - if (!$sepa) { - $this->error = 'Creation of sepa_debit on Stripe has failed'; - } else { - // association du client avec cette source de paimeent - $cs = $cu->createSource($cu->id, array('source' => $sepa->id)); - if (!$cs) { - $this->error = 'Link SEPA <-> Customer failed'; - } else { - dol_syslog("Try to create sepa_debit 3"); - // print json_encode($sepa); - - $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib"; - $sql .= " SET stripe_card_ref = '".$this->db->escape($sepa->id)."', card_type = 'sepa_debit',"; - $sql .= " stripe_account= '" . $this->db->escape($cu->id . "@" . $stripeacc) . "'"; - $sql .= " WHERE rowid = ".((int) $object->id); - $sql .= " AND type = 'ban'"; - $resql = $this->db->query($sql); - if (!$resql) { - $this->error = $this->db->lasterror(); - } - } - } - } catch (Exception $e) { - $this->error = $e->getMessage(); - dol_syslog($this->error, LOG_WARNING); - } - } - } - } else { - dol_print_error($this->db); - } - - return $sepa; - } - - /** - * Create charge. - * This is called by page htdocs/stripe/payment.php and may be deprecated. - * - * @param int $amount Amount to pay - * @param string $currency EUR, GPB... - * @param string $origin Object type to pay (order, invoice, contract...) - * @param int $item Object id to pay - * @param string $source src_xxxxx or card_xxxxx or pm_xxxxx - * @param string $customer Stripe customer ref 'cus_xxxxxxxxxxxxx' via customerStripe() - * @param string $account Stripe account ref 'acc_xxxxxxxxxxxxx' via getStripeAccount() - * @param int $status Status (0=test, 1=live) - * @param int $usethirdpartyemailforreceiptemail Use thirdparty email as receipt email - * @param boolean $capture Set capture flag to true (take payment) or false (wait) - * @return Stripe - */ - public function createPaymentStripe($amount, $currency, $origin, $item, $source, $customer, $account, $status = 0, $usethirdpartyemailforreceiptemail = 0, $capture = true) - { - global $conf; - - $error = 0; - - if (empty($status)) { - $service = 'StripeTest'; - } else { - $service = 'StripeLive'; - } - - $sql = "SELECT sa.key_account as key_account, sa.fk_soc, sa.entity"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_account as sa"; - $sql .= " WHERE sa.key_account = '".$this->db->escape($customer)."'"; - //$sql.= " AND sa.entity IN (".getEntity('societe').")"; - $sql .= " AND sa.site = 'stripe' AND sa.status = ".((int) $status); - - dol_syslog(get_class($this)."::fetch", LOG_DEBUG); - $result = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); - $key = $obj->fk_soc; - } else { - $key = null; - } - } else { - $key = null; - } - - $arrayzerounitcurrency = array('BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'); - if (!in_array($currency, $arrayzerounitcurrency)) { - $stripeamount = $amount * 100; - } else { - $stripeamount = $amount; - } - - $societe = new Societe($this->db); - if ($key > 0) { - $societe->fetch($key); - } - - $description = ""; - $ref = ""; - if ($origin == 'order') { - $order = new Commande($this->db); - $order->fetch($item); - $ref = $order->ref; - $description = "ORD=".$ref.".CUS=".$societe->id.".PM=stripe"; - } elseif ($origin == 'invoice') { - $invoice = new Facture($this->db); - $invoice->fetch($item); - $ref = $invoice->ref; - $description = "INV=".$ref.".CUS=".$societe->id.".PM=stripe"; - } - - $ipaddress = getUserRemoteIP(); - - $metadata = array( - "dol_id" => "".$item."", - "dol_type" => "".$origin."", - "dol_thirdparty_id" => "".$societe->id."", - 'dol_thirdparty_name' => $societe->name, - 'dol_version'=>DOL_VERSION, - 'dol_entity'=>$conf->entity, - 'ipaddress'=>$ipaddress - ); - $return = new Stripe($this->db); - try { - // Force to use the correct API key - global $stripearrayofkeysbyenv; - \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - - if (empty($conf->stripeconnect->enabled)) { // With a common Stripe account - if (preg_match('/pm_/i', $source)) { - $stripecard = $source; - $amountstripe = $stripeamount; - $FULLTAG = 'PFBO'; // Payment From Back Office - $stripe = $return; - $amounttopay = $amount; - $servicestatus = $status; - - dol_syslog("* createPaymentStripe get stripeacc", LOG_DEBUG); - $stripeacc = $stripe->getStripeAccount($service); // Get Stripe OAuth connect account if it exists (no network access here) - - dol_syslog("* createPaymentStripe Create payment for customer ".$customer->id." on source card ".$stripecard->id.", amounttopay=".$amounttopay.", amountstripe=".$amountstripe.", FULLTAG=".$FULLTAG, LOG_DEBUG); - - // Create payment intent and charge payment (confirmnow = true) - $paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $invoice, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1); - - $charge = new stdClass(); - if ($paymentintent->status == 'succeeded') { - $charge->status = 'ok'; - } else { - $charge->status = 'failed'; - $charge->failure_code = $stripe->code; - $charge->failure_message = $stripe->error; - $charge->failure_declinecode = $stripe->declinecode; - $stripefailurecode = $stripe->code; - $stripefailuremessage = $stripe->error; - $stripefailuredeclinecode = $stripe->declinecode; - } - } elseif (preg_match('/acct_/i', $source)) { - $charge = \Stripe\Charge::create(array( - "amount" => "$stripeamount", - "currency" => "$currency", - "statement_descriptor_suffix" => dol_trunc($description, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description) - "description" => "Stripe payment: ".$description, - "capture" => $capture, - "metadata" => $metadata, - "source" => "$source" - )); - } else { - $paymentarray = array( - "amount" => "$stripeamount", - "currency" => "$currency", - "statement_descriptor_suffix" => dol_trunc($description, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description) - "description" => "Stripe payment: ".$description, - "capture" => $capture, - "metadata" => $metadata, - "source" => "$source", - "customer" => "$customer" - ); - - if ($societe->email && $usethirdpartyemailforreceiptemail) { - $paymentarray["receipt_email"] = $societe->email; - } - - $charge = \Stripe\Charge::create($paymentarray, array("idempotency_key" => "$description")); - } - } else { - // With Stripe Connect - $fee = $amount * ($conf->global->STRIPE_APPLICATION_FEE_PERCENT / 100) + $conf->global->STRIPE_APPLICATION_FEE; - if ($fee >= $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL && $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL > $conf->global->STRIPE_APPLICATION_FEE_MINIMAL) { - $fee = $conf->global->STRIPE_APPLICATION_FEE_MAXIMAL; - } elseif ($fee < $conf->global->STRIPE_APPLICATION_FEE_MINIMAL) { - $fee = $conf->global->STRIPE_APPLICATION_FEE_MINIMAL; - } - - if (!in_array($currency, $arrayzerounitcurrency)) { - $stripefee = round($fee * 100); - } else { - $stripefee = round($fee); - } - - $paymentarray = array( - "amount" => "$stripeamount", - "currency" => "$currency", - "statement_descriptor_suffix" => dol_trunc($description, 10, 'right', 'UTF-8', 1), // 22 chars that appears on bank receipt (company + description) - "description" => "Stripe payment: ".$description, - "capture" => $capture, - "metadata" => $metadata, - "source" => "$source", - "customer" => "$customer" - ); - if ($conf->entity != $conf->global->STRIPECONNECT_PRINCIPAL && $stripefee > 0) { - $paymentarray["application_fee_amount"] = $stripefee; - } - if ($societe->email && $usethirdpartyemailforreceiptemail) { - $paymentarray["receipt_email"] = $societe->email; - } - - if (preg_match('/pm_/i', $source)) { - $stripecard = $source; - $amountstripe = $stripeamount; - $FULLTAG = 'PFBO'; // Payment From Back Office - $stripe = $return; - $amounttopay = $amount; - $servicestatus = $status; - - dol_syslog("* createPaymentStripe get stripeacc", LOG_DEBUG); - $stripeacc = $stripe->getStripeAccount($service); // Get Stripe OAuth connect account if it exists (no network access here) - - dol_syslog("* createPaymentStripe Create payment on card ".$stripecard->id.", amounttopay=".$amounttopay.", amountstripe=".$amountstripe.", FULLTAG=".$FULLTAG, LOG_DEBUG); - - // Create payment intent and charge payment (confirmnow = true) - $paymentintent = $stripe->getPaymentIntent($amounttopay, $currency, $FULLTAG, $description, $invoice, $customer->id, $stripeacc, $servicestatus, 0, 'automatic', true, $stripecard->id, 1); - - $charge = new stdClass(); - if ($paymentintent->status == 'succeeded') { - $charge->status = 'ok'; - $charge->id = $paymentintent->id; - } else { - $charge->status = 'failed'; - $charge->failure_code = $stripe->code; - $charge->failure_message = $stripe->error; - $charge->failure_declinecode = $stripe->declinecode; - } - } else { - $charge = \Stripe\Charge::create($paymentarray, array("idempotency_key" => "$description", "stripe_account" => "$account")); - } - } - if (isset($charge->id)) { - } - - $return->statut = 'success'; - $return->id = $charge->id; - - if (preg_match('/pm_/i', $source)) { - $return->message = 'Payment retrieved by card status = '.$charge->status; - } else { - if ($charge->source->type == 'card') { - $return->message = $charge->source->card->brand." ....".$charge->source->card->last4; - } elseif ($charge->source->type == 'three_d_secure') { - $stripe = new Stripe($this->db); - $src = \Stripe\Source::retrieve("".$charge->source->three_d_secure->card."", array( - "stripe_account" => $stripe->getStripeAccount($service) - )); - $return->message = $src->card->brand." ....".$src->card->last4; - } else { - $return->message = $charge->id; - } - } - } catch (\Stripe\Error\Card $e) { - include DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - // Since it's a decline, \Stripe\Error\Card will be caught - $body = $e->getJsonBody(); - $err = $body['error']; - - $return->statut = 'error'; - $return->id = $err['charge']; - $return->type = $err['type']; - $return->code = $err['code']; - $return->message = $err['message']; - $body = "Error:
    ".$return->id." ".$return->message." "; - $subject = '[Alert] Payment error using Stripe'; - $cmailfile = new CMailFile($subject, $conf->global->ONLINE_PAYMENT_SENDEMAIL, $conf->global->MAIN_INFO_SOCIETE_MAIL, $body); - $cmailfile->sendfile(); - - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (\Stripe\Error\RateLimit $e) { - // Too many requests made to the API too quickly - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (\Stripe\Error\InvalidRequest $e) { - // Invalid parameters were supplied to Stripe's API - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (\Stripe\Error\Authentication $e) { - // Authentication with Stripe's API failed - // (maybe you changed API keys recently) - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (\Stripe\Error\ApiConnection $e) { - // Network communication with Stripe failed - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (\Stripe\Error\Base $e) { - // Display a very generic error to the user, and maybe send - // yourself an email - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } catch (Exception $e) { - // Something else happened, completely unrelated to Stripe - $error++; - dol_syslog($e->getMessage(), LOG_WARNING, 0, '_stripe'); - } - return $return; - } -} diff --git a/htdocs/stripe/config.php b/htdocs/stripe/config.php deleted file mode 100644 index 453eeb2a..00000000 --- a/htdocs/stripe/config.php +++ /dev/null @@ -1,55 +0,0 @@ - - * Copyright (C) 2017 Saasprov - * Copyright (C) 2017 Ferran Marcet - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * Set Stripe environment: set the ApiKey and AppInfo - */ - -/** -* \file htdocs/stripe/config.php -* \ingroup Stripe -* \brief Page to move config in api -*/ - -require_once DOL_DOCUMENT_ROOT.'/includes/stripe/stripe-php/init.php'; -require_once DOL_DOCUMENT_ROOT.'/includes/stripe/stripe-php/lib/Stripe.php'; - -//global $stripe; -global $conf; -global $stripearrayofkeysbyenv; - -$stripearrayofkeysbyenv = array( - 0=>array( - "secret_key" => empty($conf->global->STRIPE_TEST_SECRET_KEY) ? '' : $conf->global->STRIPE_TEST_SECRET_KEY, - "publishable_key" => empty($conf->global->STRIPE_TEST_PUBLISHABLE_KEY) ? '' : $conf->global->STRIPE_TEST_PUBLISHABLE_KEY - ), - 1=>array( - "secret_key" => empty($conf->global->STRIPE_LIVE_SECRET_KEY) ? '' : $conf->global->STRIPE_LIVE_SECRET_KEY, - "publishable_key" => empty($conf->global->STRIPE_LIVE_PUBLISHABLE_KEY) ? '' : $conf->global->STRIPE_LIVE_PUBLISHABLE_KEY - ) -); - -$stripearrayofkeys = array(); -if (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha')) { - $stripearrayofkeys = $stripearrayofkeysbyenv[0]; // Test -} else { - $stripearrayofkeys = $stripearrayofkeysbyenv[1]; // Live -} - -\Stripe\Stripe::setApiKey($stripearrayofkeys['secret_key']); -\Stripe\Stripe::setAppInfo("Dolibarr Stripe", DOL_VERSION, "https://www.dolibarr.org"); // add dolibarr version -\Stripe\Stripe::setApiVersion(empty($conf->global->STRIPE_FORCE_VERSION) ? "2020-08-27" : $conf->global->STRIPE_FORCE_VERSION); // force version API diff --git a/htdocs/stripe/lib/stripe.lib.php b/htdocs/stripe/lib/stripe.lib.php deleted file mode 100644 index b0503a71..00000000 --- a/htdocs/stripe/lib/stripe.lib.php +++ /dev/null @@ -1,126 +0,0 @@ - - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/stripe/lib/stripe.lib.php - * \ingroup stripe - * \brief Library for common stripe functions - */ - -require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; - -/** - * Define head array for tabs of stripe tools setup pages - * - * @return Array of head - */ -function stripeadmin_prepare_head() -{ - global $langs, $conf; - - $h = 0; - $head = array(); - - $head[$h][0] = DOL_URL_ROOT."/stripe/admin/stripe.php"; - $head[$h][1] = $langs->trans("Stripe"); - $head[$h][2] = 'stripeaccount'; - $h++; - - $object = new stdClass(); - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab - // $this->tabs = array('entity:-tabname); to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'stripeadmin'); - - complete_head_from_modules($conf, $langs, $object, $head, $h, 'stripeadmin', 'remove'); - - return $head; -} - - -/** - * Show footer of company in HTML pages - * - * @param Societe $fromcompany Third party - * @param Translate $langs Output language - * @return void - */ -function html_print_stripe_footer($fromcompany, $langs) -{ - global $conf; - - // Juridical status - $line1 = ""; - if ($fromcompany->forme_juridique_code) { - $line1 .= ($line1 ? " - " : "").getFormeJuridiqueLabel($fromcompany->forme_juridique_code); - } - // Capital - if ($fromcompany->capital) { - $line1 .= ($line1 ? " - " : "").$langs->transnoentities("CapitalOf", $fromcompany->capital)." ".$langs->transnoentities("Currency".$conf->currency); - } - - $reg = array(); - - // Prof Id 1 - if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || !$fromcompany->idprof2)) { - $field = $langs->transcountrynoentities("ProfId1", $fromcompany->country_code); - if (preg_match('/\((.*)\)/i', $field, $reg)) { - $field = $reg[1]; - } - $line1 .= ($line1 ? " - " : "").$field.": ".$fromcompany->idprof1; - } - // Prof Id 2 - if ($fromcompany->idprof2) { - $field = $langs->transcountrynoentities("ProfId2", $fromcompany->country_code); - if (preg_match('/\((.*)\)/i', $field, $reg)) { - $field = $reg[1]; - } - $line1 .= ($line1 ? " - " : "").$field.": ".$fromcompany->idprof2; - } - - // Second line of company infos - $line2 = ""; - // Prof Id 3 - if ($fromcompany->idprof3) { - $field = $langs->transcountrynoentities("ProfId3", $fromcompany->country_code); - if (preg_match('/\((.*)\)/i', $field, $reg)) { - $field = $reg[1]; - } - $line2 .= ($line2 ? " - " : "").$field.": ".$fromcompany->idprof3; - } - // Prof Id 4 - if ($fromcompany->idprof4) { - $field = $langs->transcountrynoentities("ProfId4", $fromcompany->country_code); - if (preg_match('/\((.*)\)/i', $field, $reg)) { - $field = $reg[1]; - } - $line2 .= ($line2 ? " - " : "").$field.": ".$fromcompany->idprof4; - } - // IntraCommunautary VAT - if ($fromcompany->tva_intra != '') { - $line2 .= ($line2 ? " - " : "").$langs->transnoentities("VATIntraShort").": ".$fromcompany->tva_intra; - } - - print '


    '."\n"; - print '
    '."\n"; - print $fromcompany->name.'
    '; - print $line1.'
    '; - print $line2; - print '
    '."\n"; -} diff --git a/htdocs/stripe/payout.php b/htdocs/stripe/payout.php deleted file mode 100644 index 36c798c8..00000000 --- a/htdocs/stripe/payout.php +++ /dev/null @@ -1,178 +0,0 @@ - - * Copyright (C) 2019 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// Put here all includes required by your class file - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; -//require_once DOL_DOCUMENT_ROOT.'/core/lib/stripe.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -if (isModEnabled('accounting')) { - require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php'; -} - -// Load translation files required by the page -$langs->loadLangs(array('compta', 'salaries', 'bills', 'hrm', 'stripe')); - -// Security check -$socid = GETPOST("socid", "int"); -if ($user->socid) { - $socid = $user->socid; -} -//$result = restrictedArea($user, 'salaries', '', '', ''); - -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$rowid = GETPOST("rowid", 'alpha'); -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1) { - $page = 0; -} // If $page is not defined, or '' or -1 -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -$optioncss = GETPOST('optioncss', 'alpha'); -$param = ""; -$num = 0; -$totalnboflines = 0; - -$result = restrictedArea($user, 'banque'); - - -/* - * View - */ - -$form = new Form($db); -$acc = new Account($db); -$stripe = new Stripe($db); - -llxHeader('', $langs->trans("StripePayoutList")); - -if (isModEnabled('stripe') && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { - $service = 'StripeTest'; - $servicestatus = '0'; - dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} else { - $service = 'StripeLive'; - $servicestatus = '1'; -} - -$stripeacc = $stripe->getStripeAccount($service); -/*if (empty($stripeaccount)) -{ - print $langs->trans('ErrorStripeAccountNotDefined'); -}*/ - -if (!$rowid) { - print '
    '; - if ($optioncss != '') { - print ''; - } - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $title = $langs->trans("StripePayoutList"); - $title .= ($stripeacc ? ' (Stripe connection with Stripe OAuth Connect account '.$stripeacc.')' : ' (Stripe connection with keys from Stripe module setup)'); - - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, '', '', $limit); - - print '
    '; - print ''."\n"; - - print ''; - print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - //print_liste_field_titre("StripeCustomerId",$_SERVER["PHP_SELF"],"","","","",$sortfield,$sortorder); - //print_liste_field_titre("CustomerId", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - //print_liste_field_titre("Origin", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'center '); - print_liste_field_titre("DateOperation", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'center '); - print_liste_field_titre("Description", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'left '); - print_liste_field_titre("Paid", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'right '); - print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "", "", "", '', '', '', 'right '); - print "\n"; - - print "\n"; - - try { - if ($stripeacc) { - $payout = \Stripe\Payout::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); - } else { - $payout = \Stripe\Payout::all(array("limit" => $limit)); - } - - foreach ($payout->data as $payout) { - print ''; - - // Ref - if (!empty($stripeacc)) { - $connect = $stripeacc.'/'; - } else $connect = null; - - $url = 'https://dashboard.stripe.com/'.$connect.'test/payouts/'.$payout->id; - if ($servicestatus) { - $url = 'https://dashboard.stripe.com/'.$connect.'payouts/'.$payout->id; - } - - print "\n"; - - // Date payment - print '\n"; - // Date payment - print '\n"; - // Type - print ''; - // Amount - print '"; - // Status - print "'; - print "\n"; - } - } catch (Exception $e) { - print ''; - } - print "
    ".img_picto($langs->trans('ShowInStripe'), 'globe')." ".$payout->id."'.dol_print_date($payout->created, 'dayhour')."'.dol_print_date($payout->arrival_date, 'dayhour')."'.$payout->description.''.price(($payout->amount) / 100, 0, '', 1, -1, -1, strtoupper($payout->currency)).""; - if ($payout->status == 'paid') { - print img_picto($langs->trans($payout->status), 'statut4'); - } elseif ($payout->status == 'pending') { - print img_picto($langs->trans($payout->status), 'statut7'); - } elseif ($payout->status == 'in_transit') { - print img_picto($langs->trans($payout->status), 'statut7'); - } elseif ($payout->status == 'failed') { - print img_picto($langs->trans($payout->status), 'statut7'); - } elseif ($payout->status == 'canceled') { - print img_picto($langs->trans($payout->status), 'statut8'); - } - print '
    '.$e->getMessage().'
    "; - print '
    '; - print '
    '; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/stripe/transaction.php b/htdocs/stripe/transaction.php deleted file mode 100644 index 29eec246..00000000 --- a/htdocs/stripe/transaction.php +++ /dev/null @@ -1,242 +0,0 @@ - - * Copyright (C) 2018-2021 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// Put here all includes required by your class file - -// Load Dolibarr environment -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; -//require_once DOL_DOCUMENT_ROOT.'/core/lib/stripe.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -if (isModEnabled('accounting')) { - require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php'; -} - -// Load translation files required by the page -$langs->loadLangs(array('compta', 'salaries', 'bills', 'hrm', 'stripe')); - -// Security check -$socid = GETPOST("socid", "int"); -if ($user->socid) { - $socid = $user->socid; -} -//$result = restrictedArea($user, 'salaries', '', '', ''); - -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$rowid = GETPOST("rowid", 'alpha'); -$sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); -if (empty($page) || $page == -1) { - $page = 0; -} // If $page is not defined, or '' or -1 -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -$optioncss = GETPOST('optioncss', 'alpha'); -$param = ""; -$num = 0; -$totalnboflines = 0; -$result = restrictedArea($user, 'banque'); - - -/* - * View - */ - -$form = new Form($db); -$societestatic = new Societe($db); -$memberstatic = new Adherent($db); -$acc = new Account($db); -$stripe = new Stripe($db); - -llxHeader('', $langs->trans("StripeTransactionList")); - -if (isModEnabled('stripe') && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { - $service = 'StripeTest'; - $servicestatus = '0'; - dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); -} else { - $service = 'StripeLive'; - $servicestatus = '1'; -} -$stripeacc = $stripe->getStripeAccount($service); -/*if (empty($stripeaccount)) -{ - print $langs->trans('ErrorStripeAccountNotDefined'); -}*/ - -if (!$rowid) { - print '
    '; - if ($optioncss != '') { - print ''; - } - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - - $title = $langs->trans("StripeTransactionList"); - $title .= (!empty($stripeacc) ? ' (Stripe connection with Stripe OAuth Connect account '.$stripeacc.')' : ' (Stripe connection with keys from Stripe module setup)'); - - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $totalnboflines, 'title_accountancy.png', 0, '', '', $limit); - - print '
    '; - print ''."\n"; - - print ''; - print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - //print_liste_field_titre("StripeCustomerId",$_SERVER["PHP_SELF"],"","","","",$sortfield,$sortorder); - //print_liste_field_titre("CustomerId", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - //print_liste_field_titre("Origin", $_SERVER["PHP_SELF"], "", "", "", "", $sortfield, $sortorder); - print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'center '); - print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'left '); - print_liste_field_titre("Paid", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'right '); - print_liste_field_titre("Fee", $_SERVER["PHP_SELF"], "", "", "", '', $sortfield, $sortorder, 'right '); - print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "", "", "", '', '', '', 'right '); - print "\n"; - $connect = ""; - - try { - if ($stripeacc) { - $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit), array("stripe_account" => $stripeacc)); - } else { - $txn = \Stripe\BalanceTransaction::all(array("limit" => $limit)); - } - - foreach ($txn->data as $txn) { - //$charge = $txn; - //var_dump($txn); - - // The metadata FULLTAG is defined by the online payment page - /*$FULLTAG=$charge->metadata->FULLTAG; - - // Save into $tmparray all metadata - $tmparray = dolExplodeIntoArray($FULLTAG,'.','='); - // Load origin object according to metadata - if (!empty($tmparray['CUS'])) - { - $societestatic->fetch($tmparray['CUS']); - } - else - { - $societestatic->id = 0; - } - if (!empty($tmparray['MEM'])) - { - $memberstatic->fetch($tmparray['MEM']); - } - else - { - $memberstatic->id = 0; - } - - $societestatic->fetch($charge->metadata->idcustomer); - $societestatic->id = $charge->metadata->idcustomer; - $societestatic->lastname = $obj->lastname; - $societestatic->firstname = $obj->firstname; - $societestatic->admin = $obj->admin; - $societestatic->login = $obj->login; - $societestatic->email = $obj->email; - $societestatic->societe_id = $obj->fk_soc;*/ - - print ''; - - // Ref - if (!empty($stripeacc)) { - $connect = $stripeacc.'/'; - } - - // Ref - if (preg_match('/po_/i', $txn->source)) { - $origin = "payouts"; - } elseif (preg_match('/fee_/i', $txn->source)) { - $origin = "connect/application_fees"; - } else { - $origin = "payments"; - } - - $url = 'https://dashboard.stripe.com/'.$connect.'test/'.$origin.'/'.$txn->source; - if ($servicestatus) { - $url = 'https://dashboard.stripe.com/'.$connect.$origin.'/'.$txn->source; - } - if ($txn->type == 'stripe_fee' || $txn->type == 'reserve_transaction') { - print ""; - } else { - print "\n"; - } - - // Stripe customer - //print "\n"; - // Link - /*print "\n";*/ - // Origine - //print "\n"; - // Date payment - print '\n"; - // Type - print ''; - // Amount - print '"; - print '"; - // Status - print "'; - print "\n"; - } - } catch (Exception $e) { - print ''; - } - print "
    ".$txn->type."".img_picto($langs->trans('ShowInStripe'), 'globe')." ".$txn->source."".$charge->customer.""; - if ($societestatic->id > 0) { - print $societestatic->getNomUrl(1); - } - if ($memberstatic->id > 0) { - print $memberstatic->getNomUrl(1); - } - print ""; - ////if ($charge->metadata->dol_type=="order"){ - // $object = new Commande($db); - // $object->fetch($charge->metadata->dol_id); - // print "".img_picto('', 'object_order')." ".$object->ref.""; - //} elseif ($charge->metadata->dol_type=="invoice"){ - // $object = new Facture($db); - // $object->fetch($charge->metadata->dol_id); - // print "".img_picto('', 'object_invoice')." ".$object->ref.""; - //} - //print "'.dol_print_date($txn->created, 'dayhour')."'.$txn->type.''.price(($txn->amount) / 100, 0, '', 1, - 1, - 1, strtoupper($txn->currency))."'.price(($txn->fee) / 100, 0, '', 1, - 1, - 1, strtoupper($txn->currency)).""; - if ($txn->status == 'available') { - print img_picto($langs->trans("".$txn->status.""), 'statut4'); - } elseif ($txn->status == 'pending') { - print img_picto($langs->trans("".$txn->status.""), 'statut7'); - } elseif ($txn->status == 'failed') { - print img_picto($langs->trans("".$txn->status.""), 'statut8'); - } - print '
    '.$e->getMessage().'
    "; - print '
    '; - print '
    '; -} - -// End of page -llxFooter(); -$db->close(); diff --git a/htdocs/zapier/README.md b/htdocs/zapier/README.md deleted file mode 100644 index 66c4385e..00000000 --- a/htdocs/zapier/README.md +++ /dev/null @@ -1,10 +0,0 @@ -Module Zapier -============== - -This is a module to add interface between Zapier and Dolibarr ERP CRM. - - -Documentation -------------- - -[Module documentation](https://wiki.dolibarr.org/index.php/Module_Zapier) diff --git a/htdocs/zapier/admin/about.php b/htdocs/zapier/admin/about.php deleted file mode 100644 index 71120a38..00000000 --- a/htdocs/zapier/admin/about.php +++ /dev/null @@ -1,88 +0,0 @@ - - * Copyright (C) 2019 Frédéric FRANCE - * - * - * LICENSE ================================================================= - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * \file htdocs/zapier/admin/about.php - * \ingroup zapier - * \brief About page of module Zapier. - */ - -// Load Dolibarr environment -require '../../main.inc.php'; - -// Libraries -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -require_once '../lib/zapier.lib.php'; - -// Translations -$langs->loadLangs(array('admin', 'errors', 'zapier')); - -// Access control -if (!$user->admin) { - accessforbidden(); -} - -if (empty($conf->zapier->enabled)) accessforbidden(); -if (empty($user->admin)) accessforbidden(); - - -// Parameters -$action = GETPOST('action', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - - - -/* - * Actions - */ - -// None - - -/* - * View - */ - -$form = new Form($db); - -$page_name = "ZapierAbout"; -$help_url = 'EN:Module_Zapier'; -llxHeader('', $langs->trans($page_name), $help_url); - -// Subheader -$linkback = ''.$langs->trans("BackToModuleList").''; - -print load_fiche_titre($langs->trans($page_name), $linkback, 'object_zapier'); - -// Configuration header -$head = zapierAdminPrepareHead(); -print dol_get_fiche_head($head, 'about', '', 0, 'zapier'); - -dol_include_once('/core/modules/modZapier.class.php'); -$tmpmodule = new modZapier($db); -print $tmpmodule->getDescLong(); - -// Page end -print dol_get_fiche_end(); -llxFooter(); -$db->close(); diff --git a/htdocs/zapier/admin/setup.php b/htdocs/zapier/admin/setup.php deleted file mode 100644 index 6737d233..00000000 --- a/htdocs/zapier/admin/setup.php +++ /dev/null @@ -1,129 +0,0 @@ - - * Copyright (C) 2019 Frédéric FRANCE - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file zapier/admin/setup.php - * \ingroup zapier - * \brief Zapier setup page. - */ - -// Load Dolibarr environment -require '../../main.inc.php'; - -// Libraries -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/zapier/lib/zapier.lib.php'; - -// Translations -$langs->loadLangs(array('admin', 'zapier')); - -// Access control -if (!$user->admin) { - accessforbidden(); -} - -// Parameters -$action = GETPOST('action', 'aZ09'); -$backtopage = GETPOST('backtopage', 'alpha'); - -$arrayofparameters = array( -// 'ZAPIERFORDOLIBARR_MYPARAM1'=>array('css'=>'minwidth200', 'enabled'=>1), -// 'ZAPIERFORDOLIBARR_MYPARAM2'=>array('css'=>'minwidth500', 'enabled'=>1) -); - -if (empty($conf->zapier->enabled)) accessforbidden(); -if (empty($user->admin)) accessforbidden(); - - -/* - * Actions - */ - -if ((float) DOL_VERSION >= 6) { - include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; -} - - -/* - * View - */ - -$page_name = 'ZapierForDolibarrSetup'; -$help_url = 'EN:Module_Zapier'; -llxHeader('', $langs->trans($page_name), $help_url); - -// Subheader -$linkback = ''.$langs->trans("BackToModuleList").''; - -print load_fiche_titre($langs->trans($page_name), $linkback, 'object_zapier'); - -// Configuration header -$head = zapierAdminPrepareHead(); -print dol_get_fiche_head($head, 'settings', '', -1, "zapier"); - - -if ($action == 'edit') { - print '
    '; - print ''; - print ''; - - print ''; - print ''; - - foreach ($arrayofparameters as $key => $val) { - print ''; - } - print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '; - print $form->textwithpicto($langs->trans($key), $langs->trans($key.'Tooltip')); - print '
    '; - - print '
    '; - print ''; - print '
    '; - - print '
    '; - print '
    '; -} else { - if (!empty($arrayofparameters)) { - print ''; - print ''; - - foreach ($arrayofparameters as $key => $val) { - print ''; - } - - print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '; - print $form->textwithpicto($langs->trans($key), $langs->trans($key.'Tooltip')); - print ''.getDolGlobalString($key).'
    '; - - print '
    '; - print ''.$langs->trans("Modify").''; - print '
    '; - } else { - // Setup page goes here - echo '

    '.$langs->trans("ZapierSetupPage").'

    '; - //print '
    '.$langs->trans("NothingToSetup"); - } -} - - -// Page end -print dol_get_fiche_end(); - -llxFooter(); -$db->close(); diff --git a/htdocs/zapier/class/api_zapier.class.php b/htdocs/zapier/class/api_zapier.class.php deleted file mode 100644 index 3db40064..00000000 --- a/htdocs/zapier/class/api_zapier.class.php +++ /dev/null @@ -1,387 +0,0 @@ - - * Copyright (C) 2019-2020 Frédéric France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/zapier/class/api_zapier.class.php - * \ingroup zapier - * \brief File for API management of hook. - */ - -use Luracast\Restler\RestException; - -require_once DOL_DOCUMENT_ROOT.'/zapier/class/hook.class.php'; - - -/** - * API class for zapier hook - * - * @access protected - * @class DolibarrApiAccess {@requires user,external} - */ -class Zapier extends DolibarrApi -{ - /** - * @var array $FIELDS Mandatory fields, checked when create and update object - */ - public static $FIELDS = array( - 'url', - ); - - - /** - * @var Hook $hook {@type Hook} - */ - public $hook; - - /** - * Constructor - * - * @url GET / - * - */ - public function __construct() - { - global $db, $conf; - $this->db = $db; - $this->hook = new Hook($this->db); - } - - /** - * Get properties of a hook object - * - * Return an array with hook informations - * - * @param int $id ID of hook - * @return array|mixed data without useless information - * - * @url GET /hooks/{id} - * @throws RestException - */ - public function get($id) - { - if (!DolibarrApiAccess::$user->rights->zapier->read) { - throw new RestException(401); - } - - $result = $this->hook->fetch($id); - if (!$result) { - throw new RestException(404, 'Hook not found'); - } - - if (!DolibarrApi::_checkAccessToResource('hook', $this->hook->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - return $this->_cleanObjectDatas($this->hook); - } - - /** - * Get list of possibles choices for module - * - * Return an array with hook informations - * - * @return array data - * - * @url GET /getmoduleschoices/ - * @throws RestException - */ - public function getModulesChoices() - { - if (!DolibarrApiAccess::$user->rights->zapier->read) { - throw new RestException(401); - } - - $arraychoices = array( - 'invoices' => 'Invoices', - 'orders' => 'Orders', - 'thirdparties' => 'Thirparties', - 'contacts' => 'Contacts', - 'users' => 'Users', - ); - // $result = $this->hook->fetch($id); - // if (! $result ) { - // throw new RestException(404, 'Hook not found'); - // } - - // if (! DolibarrApi::_checkAccessToResource('hook', $this->hook->id)) { - // throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - // } - - return $arraychoices; - } - - /** - * List hooks - * - * Get a list of hooks - * - * @param string $sortfield Sort field - * @param string $sortorder Sort order - * @param int $limit Limit for list - * @param int $page Page number - * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - * @return array Array of order objects - * - * @throws RestException - * - * @url GET /hooks/ - */ - public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') - { - global $db, $conf; - - if (!DolibarrApiAccess::$user->rights->zapier->read) { - throw new RestException(401); - } - - $obj_ret = array(); - - $socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : ''; - - // Set to 1 if there is a field socid in table of object - $restrictonsocid = 0; - - // If the internal user must only see his customers, force searching by him - $search_sale = 0; - if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) { - $search_sale = DolibarrApiAccess::$user->id; - } - - $sql = "SELECT t.rowid"; - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { - // We need these fields in order to filter by sale (including the case where the user can only see his prospects) - $sql .= ", sc.fk_soc, sc.fk_user"; - } - $sql .= " FROM ".MAIN_DB_PREFIX."hook_mytable as t"; - - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale - } - $sql .= " WHERE 1 = 1"; - - // Example of use $mode - //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; - //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; - - $tmpobject = new Hook($this->db); - if ($tmpobject->ismultientitymanaged) { - $sql .= ' AND t.entity IN ('.getEntity('hook').')'; - } - if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { - $sql .= " AND t.fk_soc = sc.fk_soc"; - } - if ($restrictonsocid && $socid) { - $sql .= " AND t.fk_soc = ".((int) $socid); - } - if ($restrictonsocid && $search_sale > 0) { - // Join for the needed table to filter by sale - $sql .= " AND t.rowid = sc.fk_soc"; - } - // Insert sale filter - if ($restrictonsocid && $search_sale > 0) { - $sql .= " AND sc.fk_user = ".((int) $search_sale); - } - if ($sqlfilters) { - $errormessage = ''; - $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); - if ($errormessage) { - throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); - } - } - - $sql .= $this->db->order($sortfield, $sortorder); - if ($limit) { - if ($page < 0) { - $page = 0; - } - $offset = $limit * $page; - - $sql .= $this->db->plimit($limit + 1, $offset); - } - - $result = $this->db->query($sql); - $i = 0; - if ($result) { - $num = $this->db->num_rows($result); - while ($i < $num) { - $obj = $this->db->fetch_object($result); - $hook_static = new Hook($this->db); - if ($hook_static->fetch($obj->rowid)) { - $obj_ret[] = $this->_cleanObjectDatas($hook_static); - } - $i++; - } - } else { - throw new RestException(503, 'Error when retrieve hook list'); - } - if (!count($obj_ret)) { - throw new RestException(404, 'No hook found'); - } - return $obj_ret; - } - - /** - * Create hook object - * - * @param array $request_data Request datas - * @return int ID of hook - * - * @url POST /hook/ - */ - public function post($request_data = null) - { - if (!DolibarrApiAccess::$user->rights->zapier->write) { - throw new RestException(401); - } - - // Check mandatory fields - $fields = array( - 'url', - ); - dol_syslog("API Zapier create hook receive : ".print_r($request_data, true), LOG_DEBUG); - $result = $this->validate($request_data, $fields); - - foreach ($request_data as $field => $value) { - $this->hook->$field = $value; - } - $this->hook->fk_user = DolibarrApiAccess::$user->id; - // on crée le hook dans la base - if (!$this->hook->create(DolibarrApiAccess::$user)) { - throw new RestException(500, "Error creating Hook", array_merge(array($this->hook->error), $this->hook->errors)); - } - return array( - 'id' => $this->hook->id, - ); - } - - // /** - // * Update hook - // * - // * @param int $id Id of hook to update - // * @param array $request_data Datas - // * @return int - // * - // * @url PUT /hooks/{id} - // */ - /*public function put($id, $request_data = null) - { - if (! DolibarrApiAccess::$user->rights->zapier->write) { - throw new RestException(401); - } - - $result = $this->hook->fetch($id); - if( ! $result ) { - throw new RestException(404, 'Hook not found'); - } - - if( ! DolibarrApi::_checkAccessToResource('hook', $this->hook->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - foreach($request_data as $field => $value) { - if ($field == 'id') { - continue; - } - $this->hook->$field = $value; - } - - if ($this->hook->update($id, DolibarrApiAccess::$user) > 0) { - return $this->get($id); - } else { - throw new RestException(500, $this->hook->error); - } - }*/ - - /** - * Delete hook - * - * @param int $id Hook ID - * @return array - * - * @url DELETE /hook/{id} - */ - public function delete($id) - { - if (!DolibarrApiAccess::$user->rights->zapier->delete) { - throw new RestException(401); - } - - $result = $this->hook->fetch($id); - if (!$result) { - throw new RestException(404, 'Hook not found'); - } - - if (!DolibarrApi::_checkAccessToResource('hook', $this->hook->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - if (!$this->hook->delete(DolibarrApiAccess::$user)) { - throw new RestException(500, 'Error when deleting Hook : '.$this->hook->error); - } - - return array( - 'success' => array( - 'code' => 200, - 'message' => 'Hook deleted' - ) - ); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore - /** - * Clean sensible object datas - * - * @param Object $object Object to clean - * @return Object Object with cleaned properties - */ - public function _cleanObjectDatas($object) - { - // phpcs:disable - $object = parent::_cleanObjectDatas($object); - - /*unset($object->note); - unset($object->address); - unset($object->barcode_type); - unset($object->barcode_type_code); - unset($object->barcode_type_label); - unset($object->barcode_type_coder);*/ - - return $object; - } - - /** - * Validate fields before create or update object - * - * @param array $data Array of data to validate - * @param array $fields Array of fields needed - * @return array - * - * @throws RestException - */ - private function validate($data, $fields) - { - $hook = array(); - foreach ($fields as $field) { - if (!isset($data[$field])) { - throw new RestException(400, $field." field missing"); - } - $hook[$field] = $data[$field]; - } - return $hook; - } -} diff --git a/htdocs/zapier/class/hook.class.php b/htdocs/zapier/class/hook.class.php deleted file mode 100644 index 9b5b7335..00000000 --- a/htdocs/zapier/class/hook.class.php +++ /dev/null @@ -1,707 +0,0 @@ - - * Copyright (C) 2019 Frédéric France - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/zapier/class/hook.class.php - * \ingroup zapier - * \brief This file is a CRUD class file for Hook (Create/Read/Update/Delete) - */ - -require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; - -/** - * Class for Hook - */ -class Hook extends CommonObject -{ - /** - * @var string ID to identify managed object - */ - public $element = 'hook'; - - /** - * @var string Name of table without prefix where object is stored - */ - public $table_element = 'zapier_hook'; - - /** - * @var int Does hook support multicompany module ? 0=No test on entity, 1=Test with field entity, 2=Test with link by societe - */ - public $ismultientitymanaged = 0; - - /** - * @var int Does hook support extrafields ? 0=No, 1=Yes - */ - public $isextrafieldmanaged = 1; - - /** - * @var string String with name of icon for hook. Must be the part after the 'object_' into object_hook.png - */ - public $picto = 'hook@zapier'; - - - const STATUS_DRAFT = 0; - const STATUS_VALIDATED = 1; - const STATUS_DISABLED = -1; - - - /** - * 'type' if the field format ('integer', 'integer:Class:pathtoclass', 'varchar(x)', 'double(24,8)', 'text', 'html', 'datetime', 'timestamp', 'float') - * 'label' the translation key. - * 'enabled' is a condition when the field must be managed. - * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create). Using a negative value means field is not shown by default on list but can be selected for viewing) - * 'noteditable' says if field is not editable (1 or 0) - * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). - * 'default' is a default value for creation (can still be replaced by the global setup of default values) - * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). - * 'position' is the sort order of field. - * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. - * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). - * 'css' is the CSS style to use on field. For example: 'maxwidth200' - * 'help' is a string visible as a tooltip on field - * 'comment' is not used. You can store here any text of your choice. It is not used by application. - * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record - * 'arrayofkeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") - */ - - /** - * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. - */ - public $fields = array( - 'rowid' => array( - 'type' => 'integer', - 'label' => 'TechnicalID', - 'enabled' => 1, - 'visible' => -2, - 'noteditable' => 1, - 'notnull' => 1, - 'index' => 1, - 'position' => 1, - 'comment' => 'Id', - ), - 'entity' => array( - 'type' => 'integer', - 'label' => 'Entity', - 'enabled' => 1, - 'visible' => 0, - 'notnull' => 1, - 'default' => 1, - 'index' => 1, - 'position' => 20, - ), - 'fk_user' => array( - 'type' => 'integer', - 'label' => 'UserOwner', - 'enabled' => 1, - 'visible' => -2, - 'notnull' => 1, - 'position' => 510, - 'foreignkey' => 'llx_user.rowid', - ), - 'url' => array( - 'type' => 'varchar(255)', - 'label' => 'Url', - 'enabled' => 1, - 'visible' => 1, - 'position' => 30, - 'searchall' => 1, - 'css' => 'minwidth200', - 'help' => 'Hook url' - ), - 'module' => array( - 'type' => 'varchar(128)', - 'label' => 'Module', - 'enabled' => 1, - 'visible' => 1, - 'position' => 30, - 'searchall' => 1, - 'css' => 'minwidth200', - 'help' => 'Hook module' - ), - 'action' => array( - 'type' => 'varchar(128)', - 'label' => 'Action', - 'enabled' => 1, - 'visible' => 1, - 'position' => 30, - 'searchall' => 1, - 'css' => 'minwidth200', - 'help' => 'Hook action trigger' - ), - 'event' => array( - 'type' => 'varchar(255)', - 'label' => 'Event', - 'enabled' => 1, - 'visible' => 1, - 'position' => 30, - 'searchall' => 1, - 'css' => 'minwidth200', - 'help' => 'Event', - 'showoncombobox' => 1, - ), - 'date_creation' => array( - 'type' => 'datetime', - 'label' => 'DateCreation', - 'enabled' => 1, - 'visible' => -2, - 'notnull' => 1, - 'position' => 500, - ), - 'import_key' => array( - 'type' => 'varchar(14)', - 'label' => 'ImportId', - 'enabled' => 1, - 'visible' => -2, - 'notnull' => -1, - 'index' => 0, - 'position' => 1000, - ), - 'status' => array( - 'type' => 'integer', - 'label' => 'Status', - 'enabled' => 1, - 'visible' => 1, - 'notnull' => 1, - 'default' => 0, - 'index' => 1, - 'position' => 1000, - 'arrayofkeyval' => array( - 0 => 'Draft', - 1 => 'Active', - -1 => 'Canceled', - ), - ), - ); - - /** - * @var int ID - */ - public $rowid; - - /** - * @var string Ref - */ - public $ref; - - /** - * @var int Entity - */ - public $entity; - - /** - * @var string label - */ - public $label; - - /** - * @var string url of webhook - */ - public $url; - - /** - * @var int ID of user owner webhook - */ - public $fk_user; - - /** - * @var int Status - */ - public $status; - - /** - * @var integer|string date_creation - */ - public $date_creation; - - /** - * @var integer tms - */ - public $tms; - - /** - * @var int ID - */ - public $fk_user_creat; - - /** - * @var int ID - */ - public $fk_user_modif; - - /** - * @var string import_key - */ - public $import_key; - - - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct(DoliDB $db) - { - global $conf, $langs, $user; - - $this->db = $db; - - if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) { - $this->fields['rowid']['visible'] = 0; - } - if (!isModEnabled('multicompany') && isset($this->fields['entity'])) { - $this->fields['entity']['enabled'] = 0; - } - - // Unset fields that are disabled - foreach ($this->fields as $key => $val) { - if (isset($val['enabled']) && empty($val['enabled'])) { - unset($this->fields[$key]); - } - } - - // Translate some data of arrayofkeyval - foreach ($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) { - foreach ($this->fields['status']['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2] = $langs->trans($val2); - } - } - } - } - - /** - * Create object into database - * - * @param User $user User that creates - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - public function create(User $user, $notrigger = false) - { - return $this->createCommon($user, $notrigger); - } - - /** - * Clone an object into another one - * - * @param User $user User that creates - * @param int $fromid Id of object to clone - * @return mixed New object created, <0 if KO - */ - public function createFromClone(User $user, $fromid) - { - global $langs, $hookmanager, $extrafields; - $error = 0; - - dol_syslog(__METHOD__, LOG_DEBUG); - - $object = new self($this->db); - - $this->db->begin(); - - // Load source object - $object->fetchCommon($fromid); - // Reset some properties - unset($object->id); - unset($object->fk_user_creat); - unset($object->import_key); - - // Clear fields - $object->ref = "copy_of_".$object->ref; - $object->title = $langs->trans("CopyOf")." ".$object->title; - // ... - // Clear extrafields that are unique - if (is_array($object->array_options) && count($object->array_options) > 0) { - $extrafields->fetch_name_optionals_label($this->table_element); - foreach ($object->array_options as $key => $option) { - $shortkey = preg_replace('/options_/', '', $key); - if (!empty($extrafields->attributes[$this->table_element]['unique'][$shortkey])) { - // var_dump($key); - // var_dump($clonedObj->array_options[$key]); - // exit; - unset($object->array_options[$key]); - } - } - } - - // Create clone - $object->context['createfromclone'] = 'createfromclone'; - $result = $object->createCommon($user); - if ($result < 0) { - $error++; - $this->error = $object->error; - $this->errors = $object->errors; - } - - unset($object->context['createfromclone']); - - // End - if (!$error) { - $this->db->commit(); - return $object; - } else { - $this->db->rollback(); - return -1; - } - } - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @param string $ref Ref - * @return int <0 if KO, 0 if not found, >0 if OK - */ - public function fetch($id, $ref = null) - { - $result = $this->fetchCommon($id, $ref); - if ($result > 0 && !empty($this->table_element_line)) { - //$this->fetchLines(); - } - return $result; - } - - /** - * Load object lines in memory from the database - * - * @return int <0 if KO, 0 if not found, >0 if OK - */ - /*public function fetchLines() - { - $this->lines=array(); - - // Load lines with object MyObjectLine - - return count($this->lines)?1:0; - }*/ - - /** - * Load list of objects in memory from the database. - * - * @param string $sortorder Sort Order - * @param string $sortfield Sort field - * @param int $limit limit - * @param int $offset Offset - * @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...) - * @param string $filtermode Filter mode (AND or OR) - * @return array|int int <0 if KO, array of pages if OK - */ - public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND') - { - global $conf; - - dol_syslog(__METHOD__, LOG_DEBUG); - - $records = array(); - - $sql = 'SELECT'; - $sql .= ' t.rowid'; - // TODO Get all fields - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; - $sql .= ' WHERE t.entity = '.((int) $conf->entity); - // Manage filter - $sqlwhere = array(); - if (count($filter) > 0) { - foreach ($filter as $key => $value) { - if ($key == 't.rowid') { - $sqlwhere[] = $key." = ".((int) $value); - } elseif (strpos($key, 'date') !== false) { - $sqlwhere[] = $key." = '".$this->db->idate($value)."'"; - } elseif ($key == 'customsql') { - $sqlwhere[] = $value; - } else { - $sqlwhere[] = $key." LIKE '%".$this->db->escape($value)."%'"; - } - } - } - if (count($sqlwhere) > 0) { - $sql .= ' AND ('.implode(' '.$this->db->escape($filtermode).' ', $sqlwhere).')'; - } - - if (!empty($sortfield)) { - $sql .= $this->db->order($sortfield, $sortorder); - } - if (!empty($limit)) { - $sql .= $this->db->plimit($limit, $offset); - } - - $resql = $this->db->query($sql); - if ($resql) { - $num = $this->db->num_rows($resql); - - while ($obj = $this->db->fetch_object($resql)) { - $record = new self($this->db); - - $record->id = $obj->rowid; - // TODO Get other fields - - //var_dump($record->id); - $records[$record->id] = $record; - } - $this->db->free($resql); - - return $records; - } else { - $this->errors[] = 'Error '.$this->db->lasterror(); - dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); - - return -1; - } - } - - /** - * Update object into database - * - * @param User $user User that modifies - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function update(User $user, $notrigger = false) - { - return $this->updateCommon($user, $notrigger); - } - - /** - * Delete object in database - * - * @param User $user User that deletes - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function delete(User $user, $notrigger = false) - { - return $this->deleteCommon($user, $notrigger); - //return $this->deleteCommon($user, $notrigger, 1); - } - - /** - * Return a link to the object card (with optionaly the picto) - * - * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) - * @param string $option On what the link point to ('nolink', ...) - * @param int $notooltip 1=Disable tooltip - * @param string $morecss Add more css on link - * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking - * @return string String with URL - */ - public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) - { - global $db, $conf, $langs, $hookmanager, $action; - global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager; - - if (!empty($conf->dol_no_mouse_hover)) { - // Force disable tooltips - $notooltip = 1; - } - - $result = ''; - - $label = ''.$langs->trans("Hook").''; - $label .= '
    '; - $label .= ''.$langs->trans('Ref').': '.$this->ref; - - $url = DOL_URL_ROOT.'/zapier/hook_card.php?id='.$this->id; - - if ($option != 'nolink') { - // Add param to save lastsearch_values or not - $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0); - if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) { - $add_save_lastsearch_values = 1; - } - if ($add_save_lastsearch_values) { - $url .= '&save_lastsearch_values=1'; - } - } - - $linkclose = ''; - if (empty($notooltip)) { - if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { - $label = $langs->trans("ShowMyObject"); - $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; - } - $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; - } else { - $linkclose = ($morecss ? ' class="'.$morecss.'"' : ''); - } - - $linkstart = ''; - $linkend = ''; - - $result .= $linkstart; - if ($withpicto) { - $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); - } - if ($withpicto != 2) { - $result .= $this->ref; - } - $result .= $linkend; - //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); - - $hookmanager->initHooks(array('hookdao')); - $parameters = array( - 'id' => $this->id, - 'getnomurl' => &$result, - ); - // Note that $action and $object may have been modified by some hooks - $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); - if ($reshook > 0) { - $result = $hookmanager->resPrint; - } else { - $result .= $hookmanager->resPrint; - } - - return $result; - } - - /** - * Return label of the status - * - * @param int $mode 0 = long label - * 1 = short label - * 2 = Picto + short label - * 3 = Picto, 4=Picto + long label - * 5 = Short label + Picto - * 6 = Long label + Picto - * @return string Label of status - */ - public function getLibStatut($mode = 0) - { - return $this->LibStatut($this->status, $mode); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return the status - * - * @param int $status Id status - * @param int $mode 0 = long label, - * 1 = short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function LibStatut($status, $mode = 0) - { - // phpcs:enable - global $langs; - - if (empty($this->labelStatus) || empty($this->labelStatusShort)) { - global $langs; - //$langs->load("mymodule"); - $this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Disabled'); - $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); - $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Disabled'); - $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); - } - - $statusType = 'status5'; - if ($status == self::STATUS_VALIDATED) { - $statusType = 'status4'; - } - - return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); - } - - /** - * Load the info information in the object - * - * @param int $id Id of object - * @return void - */ - public function info($id) - { - $sql = 'SELECT rowid, date_creation as datec, tms as datem,'; - $sql .= ' fk_user_creat, fk_user_modif'; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; - $sql .= ' WHERE t.rowid = '.((int) $id); - $result = $this->db->query($sql); - if ($result) { - if ($this->db->num_rows($result)) { - $obj = $this->db->fetch_object($result); - $this->id = $obj->rowid; - - - $this->user_creation_id = $obj->fk_user_creat; - $this->user_modification_id = $obj->fk_user_modif; - $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = empty($obj->datem) ? '' : $this->db->jdate($obj->datem); - } - - $this->db->free($result); - } else { - dol_print_error($this->db); - } - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - $this->initAsSpecimenCommon(); - } - - - /** - * Action executed by scheduler - * CAN BE A CRON TASK. In such a case, parameters come from the schedule job setup field 'Parameters' - * - * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) - */ - public function doScheduledJob() - { - global $conf, $langs; - - //$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log'; - - $error = 0; - $this->output = ''; - $this->error = ''; - - dol_syslog(__METHOD__, LOG_DEBUG); - - $now = dol_now(); - - $this->db->begin(); - - // ... - - $this->db->commit(); - - return $error; - } -} - -/** - * Class MyObjectLine. You can also remove this and generate a CRUD class for lines objects. - */ -/* -class MyObjectLine -{ - // @var int ID - public $id; - // @var mixed Sample line property 1 - public $prop1; - // @var mixed Sample line property 2 - public $prop2; -} -*/ diff --git a/htdocs/zapier/lib/zapier.lib.php b/htdocs/zapier/lib/zapier.lib.php deleted file mode 100644 index 5b6a3bd3..00000000 --- a/htdocs/zapier/lib/zapier.lib.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file zapier/lib/zapier.lib.php - * \ingroup zapier - * \brief Library files with common functions for ZapierForDolibarr - */ - -/** - * Prepare admin pages header - * - * @return array - */ -function zapierAdminPrepareHead() -{ - global $langs, $conf; - - $langs->load("zapier"); - - $h = 0; - $head = array(); - - $head[$h][0] = dol_buildpath("/zapier/admin/setup.php", 1); - $head[$h][1] = $langs->trans("Settings"); - $head[$h][2] = 'settings'; - $h++; - $head[$h][0] = dol_buildpath("/zapier/admin/about.php", 1); - $head[$h][1] = $langs->trans("About"); - $head[$h][2] = 'about'; - $h++; - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - //$this->tabs = array( - // 'entity:+tabname:Title:@zapier:/zapier/mypage.php?id=__ID__' - //); // to add new tab - //$this->tabs = array( - // 'entity:-tabname:Title:@zapier:/zapier/mypage.php?id=__ID__' - //); // to remove a tab - complete_head_from_modules($conf, $langs, null, $head, $h, 'zapier'); - - complete_head_from_modules($conf, $langs, null, $head, $h, 'zapier', 'remove'); - - return $head; -} diff --git a/installer/install_creorga.ps1 b/installer/install_creorga.ps1 new file mode 100644 index 00000000..6ab84881 --- /dev/null +++ b/installer/install_creorga.ps1 @@ -0,0 +1,46 @@ +$conffile=$PSScriptRoot + "/installlist.json" + +$cfg = Get-Content -Raw -Path $conffile | ConvertFrom-Json + +if (!(Test-Path $cfg.installpath -PathType Container)) { + New-Item -ItemType Directory -Force -Path $pp +} + +$ProgressPreference = 'SilentlyContinue' +#Download +foreach ($item in $cfg.baseapps){ + Write-Host "Download $($item.name) ($($item.file))" + $outfile=$PSScriptRoot+"/"+$item.file + Invoke-WebRequest -Uri $item.url -OutFile $outfile +} +$ProgressPreference = 'Continue' +#Extract +foreach ($item in $cfg.baseapps){ + $outfile=$PSScriptRoot+"/"+$item.file + $ext = (Get-ChildItem $outfile).Extension + if ($ext -is ".zip"){ + Write-Host "Extract $($item.name) ($($item.file))" + $installpath=$cfg.installpath+"/"+$item.installpath + Expand-Archive -Path $outfile -DestinationPath $installpath + } + +} +#Install / Configure +foreach ($item in $cfg.baseapps){ + if ($item.name -is "apache"){ + $appexe = $cfg.installpath+"/Apache24/bin/httpd.exe" + & $appexe -k install -n creorgaserver + } + if ($item.name -is "php"){ + + } + + if ($item.name -is "postgresql"){ + # pg_ctl.exe register -N "dkspgsql" -U "NT AUTHORITY\NetworkService" -D "C:/Program Files/postgresql/pgsql/bin/pgsql/data" -w +# #"D:\dksapps\bin\pgsql\bin\pg_ctl" -D "D:\dksapps\data\pgsql" -l logdatei start +# D:\dksapps\bin\pgsql\bin\initdb.exe D:\dksapps\data\pgsql + } + if ($item.name -is "libreoffice"){ + + } +} \ No newline at end of file diff --git a/installer/installlist.json b/installer/installlist.json new file mode 100644 index 00000000..b2b3f4eb --- /dev/null +++ b/installer/installlist.json @@ -0,0 +1,35 @@ +{ +"installpath":"C:/Creorga", +"baseapps":[{ + "name":"apache", + "url":"https://de.apachehaus.com/downloads/httpd-2.4.55-o111s-x64-vs17.zip", + "file":"httpd-2.4.55-o111s-x64-vs17.zip", + "version":"2.4.55 (o111s;vs17)", + "installpath":"" +},{ + "name":"mod_fcgid", + "url":"https://de.apachehaus.com/downloads/mod_fcgid-2.3.9a-2.4.x-x64-vs17.zip", + "file":"mod_fcgid-2.3.9a-2.4.x-x64-vs17.zip", + "version":"2.3.9a-2.4.x-x64-vs17", + "installpath":"" +},{ + "name":"mod_log_rotate", + "url":"https://de.apachehaus.com/downloads/mod_log_rotate-1.0.2-2.4.x-x64-vc17.zip", + "file":"mod_log_rotate-1.0.2-2.4.x-x64-vc17.zip", + "version":"1.0.2-2.4.x-x64-vc17", + "installpath":"" +},{ + "name":"php", + "url":"https://windows.php.net/downloads/releases/latest/php-8.1-Win32-vs16-x64-latest.zip", + "file":"php-8.1-Win32-vs16-x64-latest.zip", + "version":"8.1 (vs16)", + "installpath":"php81" +},{ + "name":"postgresql", + "url":"https://sbp.enterprisedb.com/getfile.jsp?fileid=1258789", + "file":"postgresql-15.5-1-windows-x64-binaries.zip", + "version":"15.5-1", + "installpath":"" +} +] +} \ No newline at end of file diff --git a/tmp.php b/tmp.php new file mode 100644 index 00000000..b82cfc88 --- /dev/null +++ b/tmp.php @@ -0,0 +1,6 @@ +// convert TTF font to TCPDF format and store it on the fonts folder +$fontname = TCPDF_FONTS::addTTFfont('pathto/arial.ttf', 'TrueTypeUnicode', '', 96); + +// use the font +$pdf->SetFont($fontname, '', 14, '', false); + diff --git a/tools/doap/README b/tools/doap/README deleted file mode 100644 index e25307c9..00000000 --- a/tools/doap/README +++ /dev/null @@ -1,13 +0,0 @@ -README (English) -################################################## -Building DOAP files -################################################## - -This directory contains files and docs used to build -a DOAP descriptor file for Dolibarr. -DOAP files are files to describe a software to submit -easily its description, in one way, to several software -directories. - -Note: a DOAP descriptor file can be generated by sourceforge: -http://sourceforge.net/api/project/name/dolibarr/doap diff --git a/tools/doxygen/dolibarr-doxygen-build.pl b/tools/doxygen/dolibarr-doxygen-build.pl deleted file mode 100644 index 75a5cced..00000000 --- a/tools/doxygen/dolibarr-doxygen-build.pl +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/perl -#-------------------------------------------------------------------- -# Lance la generation de la doc dev doxygen -#-------------------------------------------------------------------- - -# Detecte repertoire du script -($DIR=$0) =~ s/([^\/\\]+)$//; -$DIR||='.'; -$DIR =~ s/([^\/\\])[\\\/]+$/$1/; - -$OPTIONS=""; -#$OPTIONS="-d Preprocessor"; - -$CONFFILE="dolibarr-doxygen.doxyfile"; - -use Cwd; -my $dir = getcwd; - -print "Current dir is: $dir\n"; -print "Running dir for doxygen must be: $DIR\n"; - -if (! -s $CONFFILE) -{ - print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n"; - print "\n"; - print "Change your current directory then, to launch the script, run:\n"; - print '> perl .\dolibarr-doxygen-build.pl (on Windows)'."\n"; - print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)'."\n"; - sleep 4; - exit 1; -} - -$SOURCE="../.."; - -# Get version $MAJOR, $MINOR and $BUILD -$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" ); -if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; } -while () { - if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; } -} -close IN; -($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3); -if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; } - - -$version=$MAJOR.".".$MINOR.".".$BUILD; - - -print "Running doxygen for version ".$version.", please wait...\n"; -print "cat $CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n"; -$result=`cat $CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`; - -print $result; - -0; diff --git a/tools/doxygen/dolibarr-doxygen-filter.pl b/tools/doxygen/dolibarr-doxygen-filter.pl deleted file mode 100644 index 9233bd9e..00000000 --- a/tools/doxygen/dolibarr-doxygen-filter.pl +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/perl -#-------------------------------------------------------------------- -# \brief This script is a preprocessor for PHP files to be used -# on PHP source files before running Doxygen. -# \author Laurent Destailleur -#-------------------------------------------------------------------- - -# Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot - -$file=$ARGV[0]; -if (! $file) -{ - print "Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot\n"; - exit; -} - -open(FILE,$file) || die "Failed to open file $file"; -while () -{ - if ($_ =~ /\\version\s/i) - { - $_ =~ s/\$Id://i; - $_ =~ s/(Exp|)\s\$$//i; - $_ =~ s/(\\version\s+)[^\s]+\s/$1/i; - $_ =~ s/(\w)\s(\w)/$1_$2/g; - } - $_ =~ s/exit\s*;/exit(0);/i; - $i=0; - $len=length($_); - $s=""; - $insidequote=0; - $insidedquote=0; - $ignore=""; - while ($i < $len) - { - $c=substr($_,$i,1); - if ($c eq "\\") - { - if ($insidequote) { $ignore="'"; }; - if ($insidedquote) { $ignore="\""; }; - } - else - { - if ($c eq "'") - { - if (! $insidedquote) - { - $c="\""; - #print "X".$ignore; - if ($ignore ne "'") - { - #print "Z".$ignore; - $insidequote++; - if ($insidequote == 2) - { - $insidequote=0; - } - } - } - #print "X".$insidequote; - } - elsif ($c eq "\"") - { - #print "Y".$insidequote; - if ($insidequote) - { - $c="'"; - } - else - { - if ($ignore ne "\"") - { - $insidedquote++; - if ($insidedquote == 2) - { - $insidedquote=0; - } - } - } - } - $ignore=""; - } - $s.=$c; - $i++; - } - print $s; -} -close(FILE); diff --git a/tools/doxygen/dolibarr-doxygen-getversion.pl b/tools/doxygen/dolibarr-doxygen-getversion.pl deleted file mode 100644 index 6d05037e..00000000 --- a/tools/doxygen/dolibarr-doxygen-getversion.pl +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/perl -#-------------------------------------------------------------------- -# Script to get version of a source file -# Does not work with cygwin cvs command on Windows. -# -#-------------------------------------------------------------------- - -# Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot - -$file=$ARGV[0]; -if (! $file) -{ - print "Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot\n"; - exit; -} - -$commande='cvs status "'.$file.'" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\''; -#print $commande; -$result=`$commande 2>&1`; - -print $result; diff --git a/tools/doxygen/dolibarr-doxygen.doxyfile b/tools/doxygen/dolibarr-doxygen.doxyfile deleted file mode 100644 index 31400661..00000000 --- a/tools/doxygen/dolibarr-doxygen.doxyfile +++ /dev/null @@ -1,1636 +0,0 @@ -# Doxyfile 1.7.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = dolibarr - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = x.y.z - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../../build - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = YES - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = "../.." - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 2 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = NO - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST = YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -#FILE_VERSION_FILTER = dolibarr-doxygen-getversion.pl -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = doxygen_warnings.log - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ../../htdocs ../../scripts - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See https://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 - -FILE_PATTERNS = *.php *.pl - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = ../../build ../../dev ../../doc ../../document ../../documents ../../htdocs/conf/conf.php ../../htdocs/custom ../../htdocs/document ../../htdocs/documents ../../htdocs/includes - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = YES - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = */CVS/* *google* *pibarcode* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = ../../htdocs/modulebuilder/template - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = *.php - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = ../../doc/images - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -# Works on Linux only -#INPUT_FILTER = ../dolibarr-doxygen-filter.pl -#INPUT_FILTER = "perl ../dolibarr-doxygen-filter.pl" -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see https://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -# Does not work with 1.7.3 -#HTML_HEADER = doxygen_header.html - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -# Does not work with 1.7.3 -HTML_FOOTER = doxygen_footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.dolibarr.doc - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Dolibarr team - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = YES - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = NO - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvances is that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = NO - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = NO - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = NO - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = FreeSans.ttf - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = NO - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = YES - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/tools/doxygen/doxygen_footer.html b/tools/doxygen/doxygen_footer.html deleted file mode 100644 index 2615af0b..00000000 --- a/tools/doxygen/doxygen_footer.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - -
    - - - - - - - - - \ No newline at end of file diff --git a/tools/doxygen/doxygen_header.html b/tools/doxygen/doxygen_header.html deleted file mode 100644 index f60f4829..00000000 --- a/tools/doxygen/doxygen_header.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - -Dolibarr source code documentation - - - - - - - - - - - -
    -
    -
    -
    - -
    -
    - - - - - -
    $projectname
    - $projectnumber
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - -
    - - - - diff --git a/tools/examples/zapier/.editorconfig b/tools/examples/zapier/.editorconfig deleted file mode 100644 index 9228bbb1..00000000 --- a/tools/examples/zapier/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -# EditorConfig is awesome: https://editorconfig.org - -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -charset = utf-8 -end_of_line = lf - -[*.js] -indent_style = space -indent_size = 4 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = false diff --git a/tools/examples/zapier/.gitignore b/tools/examples/zapier/.gitignore deleted file mode 100644 index 3e9263e3..00000000 --- a/tools/examples/zapier/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -build -docs -node_modules -*.log -.environment -.env -.zapierapprc -package-lock.json diff --git a/tools/examples/zapier/.travis.yml b/tools/examples/zapier/.travis.yml deleted file mode 100644 index 5b8db590..00000000 --- a/tools/examples/zapier/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - 8.10.0 -before_script: 'npm install -g zapier-platform-cli' -script: 'zapier test' -notifications: - email: false diff --git a/tools/examples/zapier/README.md b/tools/examples/zapier/README.md deleted file mode 100644 index e452cc2a..00000000 --- a/tools/examples/zapier/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# HOW TO BUILD - -Take a look at the dolibarr wiki page of Zapier module: - -https://wiki.dolibarr.org/index.php?title=Module_Zapier - diff --git a/tools/examples/zapier/action.json b/tools/examples/zapier/action.json deleted file mode 100644 index e3aa4e69..00000000 --- a/tools/examples/zapier/action.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "table_rowid": "id", - "id": 6764, - "ref": null, - "type_id": "5", - "type_code": "AC_RDV", - "type": null, - "type_color": null, - "code": null, - "label": "azerty", - "datec": null, - "datem": null, - "authorid": null, - "usermodid": null, - "datep": 1555365600, - "datef": 1555538399, - "durationp": 172799, - "fulldayevent": 1, - "punctual": 1, - "percentage": "-1", - "location": "", - "transparency": 1, - "priority": 0, - "userassigned": { - "1": { - "id": "1", - "transparency": 1 - } - }, - "userownerid": "1", - "userdoneid": null, - "usertodo": null, - "userdone": null, - "socid": null, - "contactid": null, - "elementtype": "", - "icalname": null, - "icalcolor": null, - "actions": [], - "email_msgid": null, - "email_from": null, - "email_sender": null, - "email_to": null, - "email_tocc": null, - "email_tobcc": null, - "email_subject": null, - "errors_to": null, - "import_key": null, - "linkedObjectsIds": null, - "fk_project": 0, - "modelpdf": null, - "note_public": null, - "note_private": null, - "note": "wxcvbn", - "duree": 0 -} \ No newline at end of file diff --git a/tools/examples/zapier/authentication.js b/tools/examples/zapier/authentication.js deleted file mode 100644 index fceedd4a..00000000 --- a/tools/examples/zapier/authentication.js +++ /dev/null @@ -1,102 +0,0 @@ -/*jshint esversion: 6 */ -const test = (z , bundle) => { - const url = bundle.authData.url+'/api/index.php/status'; - // Normally you want to make a request to an endpoint that is either specifically designed to test auth, or one that - // every user will have access to, such as an account or profile endpoint like /me. - // In this example, we'll hit httpbin, which validates the Authorization Header against the arguments passed in the URL path - const promise = z.request({ - url: url, - }); - - // This method can return any truthy value to indicate the credentials are valid. - // Raise an error to show - return promise.then((response) => { - if (response.status === 400) { - throw new Error('400 -The Session Key you supplied is invalid'); - } - if (response.status === 403) { - throw new Error('403 -The Session Key you supplied is invalid'); - } - return response; - }); -}; - -// To include the session key header on all outbound requests, simply define a function here. -// It runs runs before each request is sent out, allowing you to make tweaks to the request in a centralized spot -const includeSessionKeyHeader = (request, z, bundle) => { - if (bundle.authData.sessionKey) { - request.headers = request.headers || {}; - request.headers['DOLAPIKEY'] = bundle.authData.sessionKey; - } - return request; -}; - -// If we get a response and it is a 401, we can raise a special error telling Zapier to retry this after another exchange. -const sessionRefreshIf401 = (response, z, bundle) => { - if (bundle.authData.sessionKey) { - if (response.status === 401) { - throw new z.errors.RefreshAuthError('Session apikey needs refreshing.'); - } - } - return response; -}; - -const getSessionKey = async (z, bundle) => { - const url = bundle.authData.url + '/api/index.php/login'; - - const response = await z.request({ - url: url, - method: 'POST', - body: { - login: bundle.authData.login, - password: bundle.authData.password, - }, - }); - - // if (response.status === 401) { - // throw new Error('The login/password you supplied is invalid'); - // } - const json = JSON.parse(response.content); - return { - sessionKey: json.success.token || '', - }; -}; - -module.exports = { - config: { - type: 'session', - sessionConfig: { - perform: getSessionKey - }, - // Define any auth fields your app requires here. The user will be prompted to enter this info when - // they connect their account. - fields: [ - { - key: 'url', - label: 'Url of service without trailing-slash', - required: true, - type: 'string' - }, - { - key: 'login', - label: 'Login', - required: true, - type: 'string' - }, - { - key: 'password', - label: 'Password', - required: true, - type: 'password' - } - ], - // The test method allows Zapier to verify that the credentials a user provides are valid. We'll execute this - // method whenever a user connects their account for the first time. - test, - // The method that will exchange the fields provided by the user for session credentials. - // assuming "login" is a key returned from the test - connectionLabel: '{{login}}' - }, - befores: [includeSessionKeyHeader], - afters: [sessionRefreshIf401], -}; diff --git a/tools/examples/zapier/creates/contact.js b/tools/examples/zapier/creates/contact.js deleted file mode 100644 index bcb849ad..00000000 --- a/tools/examples/zapier/creates/contact.js +++ /dev/null @@ -1,74 +0,0 @@ -/*jshint esversion: 6 */ -// create a particular contact by name -const createContact = async (z, bundle) => { - const apiurl = bundle.authData.url + '/api/index.php/contacts'; - - const response = await z.request({ - method: 'POST', - url: apiurl, - body: { - name: bundle.inputData.name, - name_alias: bundle.inputData.name_alias, - ref_ext: bundle.inputData.ref_ext, - ref_int: bundle.inputData.ref_int, - address: bundle.inputData.address, - zip: bundle.inputData.zip, - town: bundle.inputData.town, - country_code: bundle.inputData.country_code, - country_id: bundle.inputData.country_id, - country: bundle.inputData.country, - phone: bundle.inputData.phone, - email: bundle.inputData.email, - sens: 'fromzapier' - } - }); - const result = z.JSON.parse(response.content); - // api returns an integer when ok, a json when ko - return result.response || {id: response}; -}; - -module.exports = { - key: 'contact', - noun: 'Contact', - - display: { - label: 'Create Contact', - description: 'Creates a contact.' - }, - - operation: { - inputFields: [ - {key: 'name', required: true}, - {key: 'name_alias', required: false}, - {key: 'address', required: false}, - {key: 'zip', required: false}, - {key: 'town', required: false}, - {key: 'email', required: false} - ], - perform: createContact, - - sample: { - id: 1, - name: 'DUPOND', - name_alias: 'DUPOND Ltd', - address: 'Rue des Canaries', - zip: '34090', - town: 'MONTPELLIER', - phone: '0123456789', - fax: '2345678901', - email: 'robot@domain.com' - }, - - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'name', label: 'Name'}, - {key: 'name_alias', label: 'Name alias'}, - {key: 'address', label: 'Address'}, - {key: 'zip', label: 'Zip'}, - {key: 'town', label: 'Town'}, - {key: 'phone', label: 'Phone'}, - {key: 'fax', label: 'Fax'}, - {key: 'email', label: 'Email'} - ] - } -}; diff --git a/tools/examples/zapier/creates/member.js b/tools/examples/zapier/creates/member.js deleted file mode 100644 index 152f1129..00000000 --- a/tools/examples/zapier/creates/member.js +++ /dev/null @@ -1,74 +0,0 @@ -/*jshint esversion: 6 */ -// create a particular member by name -const createMember = async (z, bundle) => { - const apiurl = bundle.authData.url + '/api/index.php/members'; - - const response = await z.request({ - method: 'POST', - url: apiurl, - body: { - name: bundle.inputData.name, - name_alias: bundle.inputData.name_alias, - ref_ext: bundle.inputData.ref_ext, - ref_int: bundle.inputData.ref_int, - address: bundle.inputData.address, - zip: bundle.inputData.zip, - town: bundle.inputData.town, - country_code: bundle.inputData.country_code, - country_id: bundle.inputData.country_id, - country: bundle.inputData.country, - phone: bundle.inputData.phone, - email: bundle.inputData.email, - sens: 'fromzapier' - } - }); - const result = z.JSON.parse(response.content); - // api returns an integer when ok, a json when ko - return result.response || {id: response}; -}; - -module.exports = { - key: 'member', - noun: 'Member', - - display: { - label: 'Create Member', - description: 'Creates a member.' - }, - - operation: { - inputFields: [ - {key: 'name', required: true}, - {key: 'name_alias', required: false}, - {key: 'address', required: false}, - {key: 'zip', required: false}, - {key: 'town', required: false}, - {key: 'email', required: false} - ], - perform: createMember, - - sample: { - id: 1, - name: 'DUPOND', - name_alias: 'DUPOND Ltd', - address: 'Rue des Canaries', - zip: '34090', - town: 'MONTPELLIER', - phone: '0123456789', - fax: '2345678901', - email: 'robot@domain.com' - }, - - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'name', label: 'Name'}, - {key: 'name_alias', label: 'Name alias'}, - {key: 'address', label: 'Address'}, - {key: 'zip', label: 'Zip'}, - {key: 'town', label: 'Town'}, - {key: 'phone', label: 'Phone'}, - {key: 'fax', label: 'Fax'}, - {key: 'email', label: 'Email'} - ] - } -}; diff --git a/tools/examples/zapier/creates/thirdparty.js b/tools/examples/zapier/creates/thirdparty.js deleted file mode 100644 index 2abeef6a..00000000 --- a/tools/examples/zapier/creates/thirdparty.js +++ /dev/null @@ -1,90 +0,0 @@ -/*jshint esversion: 6 */ -// create a particular thirdparty by name -const createThirdparty = async (z, bundle) => { - const apiurl = bundle.authData.url + '/api/index.php/thirdparties'; - - const response = await z.request({ - method: 'POST', - url: apiurl, - body: { - name: bundle.inputData.name, - name_alias: bundle.inputData.name_alias, - ref_ext: bundle.inputData.ref_ext, - ref_int: bundle.inputData.ref_int, - address: bundle.inputData.address, - zip: bundle.inputData.zip, - town: bundle.inputData.town, - country_code: bundle.inputData.country_code, - country_id: bundle.inputData.country_id, - country: bundle.inputData.country, - phone: bundle.inputData.phone, - email: bundle.inputData.email, - client: bundle.inputData.client, - fournisseur: bundle.inputData.fournisseur, - code_client: bundle.inputData.code_client, - code_fournisseur: bundle.inputData.code_fournisseur, - sens: 'fromzapier' - } - }); - const result = z.JSON.parse(response.content); - // api returns an integer when ok, a json when ko - return result.response || {id: response}; -}; - -module.exports = { - key: 'thirdparty', - noun: 'Thirdparty', - - display: { - label: 'Create Thirdparty', - description: 'Creates a thirdparty.' - }, - - operation: { - inputFields: [ - {key: 'name', required: true}, - {key: 'name_alias', required: false}, - {key: 'address', required: false}, - {key: 'zip', required: false}, - {key: 'town', required: false}, - {key: 'email', required: false}, - {key: 'client', type: 'integer', required: false}, - {key: 'fournisseur', type: 'integer', required: false}, - {key: 'code_client', required: false}, - {key: 'code_fournisseur', required: false} - ], - perform: createThirdparty, - - sample: { - id: 1, - name: 'DUPOND', - name_alias: 'DUPOND Ltd', - address: 'Rue des Canaries', - zip: '34090', - town: 'MONTPELLIER', - phone: '0123456789', - fax: '2345678901', - email: 'robot@domain.com', - client: 1, - fournisseur: 0, - code_client: 'CU1903-1234', - code_fournisseur: 'SU1903-2345' - }, - - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'name', label: 'Name'}, - {key: 'name_alias', label: 'Name alias'}, - {key: 'address', label: 'Address'}, - {key: 'zip', label: 'Zip'}, - {key: 'town', label: 'Town'}, - {key: 'phone', label: 'Phone'}, - {key: 'fax', label: 'Fax'}, - {key: 'email', label: 'Email'}, - {key: 'client', type: "integer", label: 'Customer/Prospect 0/1/2/3'}, - {key: 'fournisseur', type: "integer", label: 'Supplier 0/1'}, - {key: 'code_client', label: 'Customer code'}, - {key: 'code_fournisseur', label: 'Supplier code'} - ] - } -}; diff --git a/tools/examples/zapier/index.js b/tools/examples/zapier/index.js deleted file mode 100644 index fdd1ed29..00000000 --- a/tools/examples/zapier/index.js +++ /dev/null @@ -1,93 +0,0 @@ -/*jshint esversion: 6 */ -const triggerAction = require('./triggers/action'); -const triggerOrder = require('./triggers/order'); -const triggerThirdparty = require('./triggers/thirdparty'); -const triggerContact = require('./triggers/contact'); -const triggerTicket = require('./triggers/ticket'); -const triggerUser = require('./triggers/user'); -const triggerMember = require('./triggers/member'); - -const searchThirdparty = require('./searches/thirdparty'); -const searchContact = require('./searches/contact'); -const searchMember = require('./searches/member'); - -const createThirdparty = require('./creates/thirdparty'); -const createContact = require('./creates/contact'); -const createMember = require('./creates/member'); - -const { - config: authentication, - befores = [], - afters = [], -} = require('./authentication'); - -// To include the session key header on all outbound requests, simply define a function here. -// It runs runs before each request is sent out, allowing you to make tweaks to the request in a centralized spot -// const includeSessionKeyHeader = (request, z, bundle) => { -// if (bundle.authData.sessionKey) { -// request.headers = request.headers || {}; -// request.headers['DOLAPIKEY'] = bundle.authData.sessionKey; -// } -// return request; -// }; - -// If we get a response and it is a 401, we can raise a special error telling Zapier to retry this after another exchange. -// const sessionRefreshIf401 = (response, z, bundle) => { -// if (bundle.authData.sessionKey) { -// if (response.status === 401) { -// throw new z.errors.RefreshAuthError('Session apikey needs refreshing.'); -// } -// } -// return response; -// }; - -// We can roll up all our behaviors in an App. -const App = { - // This is just shorthand to reference the installed dependencies you have. Zapier will - // need to know these before we can upload - version: require('./package.json').version, - platformVersion: require('zapier-platform-core').version, - - authentication: authentication, - - // beforeRequest & afterResponse are optional hooks into the provided HTTP client - beforeRequest: [ - ...befores - ], - - afterResponse: [ - ...afters - ], - - // If you want to define optional resources to simplify creation of triggers, searches, creates - do that here! - resources: { - }, - - // If you want your trigger to show up, you better include it here! - triggers: { - [triggerAction.key]: triggerAction, - [triggerOrder.key]: triggerOrder, - [triggerThirdparty.key]: triggerThirdparty, - [triggerContact.key]: triggerContact, - [triggerTicket.key]: triggerTicket, - [triggerUser.key]: triggerUser, - [triggerMember.key]: triggerMember, - }, - - // If you want your searches to show up, you better include it here! - searches: { - [searchThirdparty.key]: searchThirdparty, - [searchContact.key]: searchContact, - [searchMember.key]: searchMember, - }, - - // If you want your creates to show up, you better include it here! - creates: { - [createThirdparty.key]: createThirdparty, - [createContact.key]: createContact, - [createMember.key]: createMember, - } -}; - -// Finally, export the app. -module.exports = App; diff --git a/tools/examples/zapier/package.json b/tools/examples/zapier/package.json deleted file mode 100644 index 88529287..00000000 --- a/tools/examples/zapier/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "dolibarr", - "version": "1.14.0", - "description": "An app for connecting Dolibarr to the Zapier platform.", - "repository": "Dolibarr/dolibarr", - "homepage": "https://www.dolibarr.org/", - "author": "Frédéric France ", - "license": "BSD-3-Clause", - "main": "index.js", - "scripts": { - "test": "mocha --recursive" - }, - "engines": { - "node": "14.0.0", - "npm": ">=5.6.0" - }, - "dependencies": { - "zapier-platform-core": "11.3.1" - }, - "devDependencies": { - "mocha": "^5.2.0", - "should": "^13.2.0" - } -} diff --git a/tools/examples/zapier/resources/resources.js b/tools/examples/zapier/resources/resources.js deleted file mode 100644 index e69de29b..00000000 diff --git a/tools/examples/zapier/searches/contact.js b/tools/examples/zapier/searches/contact.js deleted file mode 100644 index b52b8d3e..00000000 --- a/tools/examples/zapier/searches/contact.js +++ /dev/null @@ -1,95 +0,0 @@ -module.exports = { - key: 'contact', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Contact', - display: { - label: 'Find a Contact', - description: 'Search for contact.' - }, - - // `operation` is where we make the call to your API to do the search - operation: { - // This search only has one search field. Your searches might have just one, or many - // search fields. - inputFields: [ - { - key: 'lastname', - type: 'string', - label: 'Lastname', - helpText: 'Lastname to limit to the search to (i.e. The company or %company%).' - }, - { - key: 'email', - type: 'string', - label: 'Email', - helpText: 'Email to limit to the search to.' - } - ], - - perform: async (z, bundle) => { - const url = bundle.authData.url + '/api/index.php/contacts/'; - - // Put the search value in a query param. The details of how to build - // a search URL will depend on how your API works. - let filter = ''; - if (bundle.inputData.lastname) { - filter = "t.lastname like \'%"+bundle.inputData.name+"%\'"; - } - if (bundle.inputData.email) { - if (bundle.inputData.lastname) { - filter += " and "; - } - filter += "t.email like \'"+bundle.inputData.email+"\'"; - } - const response = await z.request({ - url: url, - // this parameter avoid throwing errors and let us manage them - skipThrowForStatus: true, - params: { - sqlfilters: filter - } - }); - //z.console.log(response); - if (response.status != 200) { - return []; - } - return response.json; - }, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'DOE', - firstname: 'John', - authorId: 1, - directions: '1. Boil Noodles\n2.Serve with sauce', - style: 'italian' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - { - key: 'id', - type: "integer", - label: 'ID' - }, - {key: 'createdAt', type: "integer", label: 'Created At'}, - {key: 'name', label: 'Name'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'directions', label: 'Directions'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - { - key: 'style', - label: 'Style' - } - ] - } -}; diff --git a/tools/examples/zapier/searches/member.js b/tools/examples/zapier/searches/member.js deleted file mode 100644 index f1a84061..00000000 --- a/tools/examples/zapier/searches/member.js +++ /dev/null @@ -1,88 +0,0 @@ -module.exports = { - key: 'member', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Member', - display: { - label: 'Find a Member', - description: 'Search for member.' - }, - - // `operation` is where we make the call to your API to do the search - operation: { - // This search only has one search field. Your searches might have just one, or many - // search fields. - inputFields: [ - { - key: 'lastname', - type: 'string', - label: 'Lastname', - helpText: 'Lastname to limit to the search to (i.e. The company or %company%).' - }, - { - key: 'email', - type: 'string', - label: 'Email', - helpText: 'Email to limit to the search to.' - } - ], - - perform: async (z, bundle) => { - const url = bundle.authData.url + '/api/index.php/members/'; - - // Put the search value in a query param. The details of how to build - // a search URL will depend on how your API works. - let filter = ''; - if (bundle.inputData.lastname) { - filter = "t.lastname like \'%" + bundle.inputData.name + "%\'"; - } - if (bundle.inputData.email) { - if (bundle.inputData.lastname) { - filter += " and "; - } - filter += "t.email like \'" + bundle.inputData.email + "\'"; - } - const response = await z.request({ - url: url, - // this parameter avoid throwing errors and let us manage them - skipThrowForStatus: true, - params: { - sqlfilters: filter - } - }); - //z.console.log(response); - if (response.status != 200) { - return []; - } - return response.json; - }, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'DOE', - firstname: 'John', - authorId: 1, - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - { - key: 'id', - type: "integer", - label: 'ID' - }, - { key: 'createdAt', type: "integer", label: 'Created At' }, - { key: 'name', label: 'Name' }, - { key: 'firstname', label: 'Firstname' }, - { key: 'authorId', type: "integer", label: 'Author ID' }, - ] - } -}; diff --git a/tools/examples/zapier/searches/thirdparty.js b/tools/examples/zapier/searches/thirdparty.js deleted file mode 100644 index e1e6878f..00000000 --- a/tools/examples/zapier/searches/thirdparty.js +++ /dev/null @@ -1,95 +0,0 @@ -module.exports = { - key: 'thirdparty', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Thirdparty', - display: { - label: 'Find a Thirdparty', - description: 'Search for thirdparty.' - }, - - // `operation` is where we make the call to your API to do the search - operation: { - // This search only has one search field. Your searches might have just one, or many - // search fields. - inputFields: [ - { - key: 'name', - type: 'string', - label: 'Name', - helpText: 'Name to limit to the search to (i.e. The company or %company%).' - }, - { - key: 'email', - type: 'string', - label: 'Email', - helpText: 'Email to limit to the search to.' - } - ], - - perform: async (z, bundle) => { - const url = bundle.authData.url + '/api/index.php/thirdparties/'; - - // Put the search value in a query param. The details of how to build - // a search URL will depend on how your API works. - let filter = ''; - if (bundle.inputData.name) { - filter = "t.nom like \'%"+bundle.inputData.name+"%\'"; - } - if (bundle.inputData.email) { - if (bundle.inputData.name) { - filter += " and "; - } - filter += "t.email like \'"+bundle.inputData.email+"\'"; - } - const response = await z.request({ - url: url, - // this parameter avoid throwing errors and let us manage them - skipThrowForStatus: true, - params: { - sqlfilters: filter - } - }); - //z.console.log(response); - if (response.status != 200) { - return []; - } - return response.json; - }, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'DOE', - firstname: 'John', - authorId: 1, - directions: '1. Boil Noodles\n2.Serve with sauce', - style: 'italian' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - { - key: 'id', - type: "integer", - label: 'ID' - }, - {key: 'createdAt', type: "integer", label: 'Created At'}, - {key: 'name', label: 'Name'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'directions', label: 'Directions'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - { - key: 'style', - label: 'Style' - } - ] - } -}; diff --git a/tools/examples/zapier/test/index.js b/tools/examples/zapier/test/index.js deleted file mode 100644 index 220e48f5..00000000 --- a/tools/examples/zapier/test/index.js +++ /dev/null @@ -1,17 +0,0 @@ -require('should'); - -const zapier = require('zapier-platform-core'); - -// Use this to make test calls into your app: -const App = require('../index'); -const appTester = zapier.createAppTester(App); - -describe('My App', () => { - - it('should test something', (done) => { - const x = 1; - x.should.eql(1); - done(); - }); - -}); diff --git a/tools/examples/zapier/triggers/action.js b/tools/examples/zapier/triggers/action.js deleted file mode 100644 index 0e152473..00000000 --- a/tools/examples/zapier/triggers/action.js +++ /dev/null @@ -1,178 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'action', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getAction = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const action = { - id: bundle.cleanedRequest.id, - ref: bundle.cleanedRequest.ref, - ref_client: bundle.cleanedRequest.ref_client, - name: bundle.cleanedRequest.name, - firstname: bundle.cleanedRequest.firstname, - usertodo__name: bundle.cleanedRequest.usertodo__name, - location: bundle.cleanedRequest.location, - label: bundle.cleanedRequest.label, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - module: bundle.cleanedRequest.module, - datep: bundle.cleanedRequest.datep, - datef: bundle.cleanedRequest.datef, - fulldayevent: bundle.cleanedRequest.fulldayevent, - transparency: bundle.cleanedRequest.transparency, - icalname: bundle.cleanedRequest.icalname, - icalcolor: bundle.cleanedRequest.icalcolor, - note: bundle.cleanedRequest.note, - note_public: bundle.cleanedRequest.note_public, - note_private: bundle.cleanedRequest.note_private, - action: bundle.cleanedRequest.action - }; - - return [action]; -}; - -const getFallbackRealAction = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/agendaevents/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/actions', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your actions separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'action', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Action', - display: { - label: 'New Agenda', - description: 'Triggers when a new agenda with action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of agenda this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - delete: "Delete", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getAction, - performList: getFallbackRealAction, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'Best Spagetti Ever', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - { - key: 'id', - type: "integer", - label: 'ID' - }, - { - key: 'createdAt', - type: "integer", - label: 'Created At' - }, - { - key: 'name', - label: 'Name' - }, - { - key: 'usertodo__name', - label: 'UserToDo Name' - }, - { - key: 'authorId', - type: "integer", - label: 'Author ID' - }, - { - key: 'action', - label: 'Action' - } - ] - } -}; diff --git a/tools/examples/zapier/triggers/contact.js b/tools/examples/zapier/triggers/contact.js deleted file mode 100644 index 2ba3bd22..00000000 --- a/tools/examples/zapier/triggers/contact.js +++ /dev/null @@ -1,171 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'contact', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getContact = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const contact = { - id: bundle.cleanedRequest.id, - name: bundle.cleanedRequest.name, - name_alias: bundle.cleanedRequest.name_alias, - firstname: bundle.cleanedRequest.firstname, - address: bundle.cleanedRequest.address, - zip: bundle.cleanedRequest.zip, - town: bundle.cleanedRequest.town, - email: bundle.cleanedRequest.email, - phone_pro: bundle.cleanedRequest.phone_pro, - phone_perso: bundle.cleanedRequest.phone_perso, - phone_mobile: bundle.cleanedRequest.phone_mobile, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - action: bundle.cleanedRequest.action - }; - - return [contact]; -}; - -const getFallbackRealContact = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/contacts/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getModulesChoices = (z/*, bundle*/) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getmoduleschoices', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; -// const getModulesChoices = () => { -// return { -// orders: "Order", -// invoices: "Invoice", -// contacts: "Contact", -// contacts: "Contacts" -// }; -// }; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/thirparty`, -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your triggers separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'contact', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Contact', - display: { - label: 'New Contact', - description: 'Triggers when a new contact action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of contact this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getContact, - performList: getFallbackRealContact, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - lastname: 'DOE', - firstname: 'John', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'createdAt', label: 'Created At'}, - {key: 'lastname', label: 'Lastname'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'phone', label: 'Phone pro'}, - {key: 'phone_perso', label: 'Phone perso'}, - {key: 'phone_mobile', label: 'Phone mobile'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - {key: 'action', label: 'Action'} - ] - } -}; diff --git a/tools/examples/zapier/triggers/member.js b/tools/examples/zapier/triggers/member.js deleted file mode 100644 index 3385cdca..00000000 --- a/tools/examples/zapier/triggers/member.js +++ /dev/null @@ -1,171 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'member', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getMember = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const member = { - id: bundle.cleanedRequest.id, - name: bundle.cleanedRequest.name, - name_alias: bundle.cleanedRequest.name_alias, - firstname: bundle.cleanedRequest.firstname, - address: bundle.cleanedRequest.address, - zip: bundle.cleanedRequest.zip, - town: bundle.cleanedRequest.town, - email: bundle.cleanedRequest.email, - phone_pro: bundle.cleanedRequest.phone_pro, - phone_perso: bundle.cleanedRequest.phone_perso, - phone_mobile: bundle.cleanedRequest.phone_mobile, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - action: bundle.cleanedRequest.action - }; - - return [member]; -}; - -const getFallbackRealMember = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/members/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getModulesChoices = (z/*, bundle*/) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getmoduleschoices', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; -// const getModulesChoices = () => { -// return { -// orders: "Order", -// invoices: "Invoice", -// members: "Member", -// members: "Members" -// }; -// }; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/thirparty`, -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your triggers separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'member', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Member', - display: { - label: 'New Member', - description: 'Triggers when a new member action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of member this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getMember, - performList: getFallbackRealMember, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - lastname: 'DOE', - firstname: 'John', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'createdAt', label: 'Created At'}, - {key: 'lastname', label: 'Lastname'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'phone', label: 'Phone pro'}, - {key: 'phone_perso', label: 'Phone perso'}, - {key: 'phone_mobile', label: 'Phone mobile'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - {key: 'action', label: 'Action'} - ] - } -}; diff --git a/tools/examples/zapier/triggers/order.js b/tools/examples/zapier/triggers/order.js deleted file mode 100644 index 061ce218..00000000 --- a/tools/examples/zapier/triggers/order.js +++ /dev/null @@ -1,149 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'order', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getOrder = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const order = { - id: bundle.cleanedRequest.id, - ref: bundle.cleanedRequest.ref, - ref_client: bundle.cleanedRequest.ref_client, - name: bundle.cleanedRequest.name, - firstname: bundle.cleanedRequest.firstname, - directions: bundle.cleanedRequest.directions, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - note_public: bundle.cleanedRequest.note_public, - note_private: bundle.cleanedRequest.note_private, - action: bundle.cleanedRequest.action - }; - - return [order]; -}; - -const getFallbackRealOrder = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/orders/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/orders', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your orders separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'order', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Order', - display: { - label: 'New Order', - description: 'Triggers when a new order with action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of order this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getOrder, - performList: getFallbackRealOrder, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'Best Spagetti Ever', - authorId: 1, - directions: '1. Boil Noodles\n2.Serve with sauce', - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'createdAt', type: "integer", label: 'Created At'}, - {key: 'name', label: 'Name'}, - {key: 'directions', label: 'Directions'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - {key: 'module', label: 'Module'}, - {key: 'action', label: 'Action'} - ] - } -}; diff --git a/tools/examples/zapier/triggers/thirdparty.js b/tools/examples/zapier/triggers/thirdparty.js deleted file mode 100644 index 76194acb..00000000 --- a/tools/examples/zapier/triggers/thirdparty.js +++ /dev/null @@ -1,188 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'company', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getThirdparty = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const thirdparty = { - id: bundle.cleanedRequest.id, - name: bundle.cleanedRequest.name, - name_alias: bundle.cleanedRequest.name_alias, - firstname: bundle.cleanedRequest.firstname, - address: bundle.cleanedRequest.address, - zip: bundle.cleanedRequest.zip, - town: bundle.cleanedRequest.town, - email: bundle.cleanedRequest.email, - client: bundle.cleanedRequest.client, - fournisseur: bundle.cleanedRequest.fournisseur, - code_client: bundle.cleanedRequest.code_client, - code_fournisseur: bundle.cleanedRequest.code_fournisseur, - idprof1: bundle.cleanedRequest.idprof1, - idprof2: bundle.cleanedRequest.idprof2, - idprof3: bundle.cleanedRequest.idprof3, - idprof4: bundle.cleanedRequest.idprof4, - idprof5: bundle.cleanedRequest.idprof5, - idprof6: bundle.cleanedRequest.idprof6, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - action: bundle.cleanedRequest.action - }; - - return [thirdparty]; -}; - -const getFallbackRealThirdparty = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/thirdparties/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getModulesChoices = (z/*, bundle*/) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getmoduleschoices', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; -// const getModulesChoices = () => { - -// return { -// orders: "Order", -// invoices: "Invoice", -// thirdparties: "Thirdparty", -// contacts: "Contacts" -// }; -// }; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/thirparty`, -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your triggers separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'thirdparty', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'Thirdparty', - display: { - label: 'New Thirdparty', - description: 'Triggers when a new thirdparty action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of thirdparty this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getThirdparty, - performList: getFallbackRealThirdparty, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - name: 'DOE', - name_alias: 'DOE Ltd', - firstname: 'John', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'createdAt', label: 'Created At'}, - {key: 'name', label: 'Name'}, - {key: 'name_alias', label: 'Name alias'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - {key: 'action', label: 'Action'}, - {key: 'client', label: 'Customer/Prospect 0/1/2/3'}, - {key: 'fournisseur', label: 'Supplier 0/1'}, - {key: 'code_client', label: 'Customer code'}, - {key: 'code_fournisseur', label: 'Supplier code'}, - {key: 'idprof1', label: 'Id Prof 1'}, - {key: 'idprof2', label: 'Id Prof 2'}, - {key: 'idprof3', label: 'Id Prof 3'}, - {key: 'idprof4', label: 'Id Prof 4'}, - {key: 'idprof5', label: 'Id Prof 5'}, - {key: 'idprof6', label: 'Id Prof 6'} - ] - } -}; diff --git a/tools/examples/zapier/triggers/ticket.js b/tools/examples/zapier/triggers/ticket.js deleted file mode 100644 index c642099b..00000000 --- a/tools/examples/zapier/triggers/ticket.js +++ /dev/null @@ -1,237 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'ticket', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getTicket = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const ticket = { - id: bundle.cleanedRequest.id, - track_id: bundle.cleanedRequest.track_id, - subject: bundle.cleanedRequest.subject, - message: bundle.cleanedRequest.message, - lastname: bundle.cleanedRequest.lastname, - firstname: bundle.cleanedRequest.firstname, - address: bundle.cleanedRequest.address, - zip: bundle.cleanedRequest.zip, - town: bundle.cleanedRequest.town, - email_from: bundle.cleanedRequest.email_from, - login: bundle.cleanedRequest.login, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - action: bundle.cleanedRequest.action - }; - - return [ticket]; -}; - -const getFallbackRealTicket = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/tickets/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getModulesChoices = (z/*, bundle*/) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getmoduleschoices', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; -// const getModulesChoices = () => { - -// return { -// orders: "Order", -// invoices: "Invoice", -// thirdparties: "Thirdparty", -// users: "User", -// tickets: "Ticket", -// contacts: "Contacts" -// }; -// }; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/thirparty`, -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your triggers separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'ticket', - - // You'll want to provide some helpful display labels and descriptions - // for tickets. Zapier will put them into the UX. - noun: 'Ticket', - display: { - label: 'New Ticket', - description: 'Triggers when a new ticket action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a ticket could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - type: 'string', - required: true, - helpText: 'Which action of ticket this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getTicket, - performList: getFallbackRealTicket, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - track_id: 'Xaz123er', - subject: 'Subject', - message: 'Message', - createdAt: 1472069465, - lastname: 'DOE', - firstname: 'John', - email: 'john@doe.com', - address: 'Park Avenue', - zip: '12345', - town: 'NEW-YORK', - email_from: 'doe.john@example;com', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - { - key: 'id', - type: "integer", - label: 'ID' - }, - { - key: 'track_id', - type: "string", - label: 'TrackID' - }, - { - key: 'subject', - type: "string", - label: 'Subject' - }, - { - key: 'message', - type: "string", - label: 'Message' - }, - { - key: 'createdAt', - type: "integer", - label: 'Created At' - }, - { - key: 'lastname', - label: 'Lastname' - }, - { - key: 'firstname', - label: 'Firstname' - }, - { - key: 'email', - label: 'Email' - }, - { - key: 'address', - label: 'Address' - }, - { - key: 'zip', - label: 'Zip' - }, - { - key: 'town', - label: 'Town' - }, - { - key: 'email_from', - type: 'string', - label: 'Email from' - }, - { - key: 'authorId', - type: "integer", - label: 'Author ID' - }, - { - key: 'action', - type: 'string', - label: 'Action' - } - ] - } -}; diff --git a/tools/examples/zapier/triggers/user.js b/tools/examples/zapier/triggers/user.js deleted file mode 100644 index 92209bb8..00000000 --- a/tools/examples/zapier/triggers/user.js +++ /dev/null @@ -1,177 +0,0 @@ -const subscribeHook = (z, bundle) => { - // `z.console.log()` is similar to `console.log()`. - z.console.log('suscribing hook!'); - - // bundle.targetUrl has the Hook URL this app should call when an action is created. - const data = { - url: bundle.targetUrl, - event: bundle.event, - module: 'user', - action: bundle.inputData.action - }; - - const url = bundle.authData.url + '/api/index.php/zapierapi/hook'; - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: url, - method: 'POST', - body: data, - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const unsubscribeHook = (z, bundle) => { - // bundle.subscribeData contains the parsed response JSON from the subscribe - // request made initially. - z.console.log('unsuscribing hook!'); - - // You can build requests and our client will helpfully inject all the variables - // you need to complete. You can also register middleware to control this. - const options = { - url: bundle.authData.url + '/api/index.php/zapierapi/hook/' + bundle.subscribeData.id, - method: 'DELETE', - }; - - // You may return a promise or a normal data structure from any perform method. - return z.request(options).then((response) => JSON.parse(response.content)); -}; - -const getUser = (z, bundle) => { - // bundle.cleanedRequest will include the parsed JSON object (if it's not a - // test poll) and also a .querystring property with the URL's query string. - const user = { - id: bundle.cleanedRequest.id, - lastname: bundle.cleanedRequest.lastname, - firstname: bundle.cleanedRequest.firstname, - address: bundle.cleanedRequest.address, - zip: bundle.cleanedRequest.zip, - town: bundle.cleanedRequest.town, - email: bundle.cleanedRequest.email, - login: bundle.cleanedRequest.login, - authorId: bundle.cleanedRequest.authorId, - createdAt: bundle.cleanedRequest.createdAt, - action: bundle.cleanedRequest.action - }; - - return [user]; -}; - -const getFallbackRealUser = (z, bundle) => { - // For the test poll, you should get some real data, to aid the setup process. - const module = bundle.inputData.module; - const options = { - url: bundle.authData.url + '/api/index.php/users/0', - }; - - return z.request(options).then((response) => [JSON.parse(response.content)]); -}; - -// const getModulesChoices = (z/*, bundle*/) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const options = { -// url: bundle.authData.url + '/api/index.php/zapierapi/getmoduleschoices', -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; -// const getModulesChoices = () => { - -// return { -// orders: "Order", -// invoices: "Invoice", -// thirdparties: "Thirdparty", -// users: "User", -// contacts: "Contacts" -// }; -// }; - -// const getActionsChoices = (z, bundle) => { -// // For the test poll, you should get some real data, to aid the setup process. -// const module = bundle.inputData.module; -// const options = { -// url: url: bundle.authData.url + '/api/index.php/zapierapi/getactionschoices/thirparty`, -// }; - -// return z.request(options).then((response) => JSON.parse(response.content)); -// }; - -// We recommend writing your triggers separate like this and rolling them -// into the App definition at the end. -module.exports = { - key: 'user', - - // You'll want to provide some helpful display labels and descriptions - // for users. Zapier will put them into the UX. - noun: 'User', - display: { - label: 'New User', - description: 'Triggers when a new user action is done in Dolibarr.' - }, - - // `operation` is where the business logic goes. - operation: { - - // `inputFields` can define the fields a user could provide, - // we'll pass them in as `bundle.inputData` later. - inputFields: [ - { - key: 'action', - required: true, - type: 'string', - helpText: 'Which action of user this should trigger on.', - choices: { - create: "Create", - modify: "Modify", - validate: "Validate", - } - } - ], - - type: 'hook', - - performSubscribe: subscribeHook, - performUnsubscribe: unsubscribeHook, - - perform: getUser, - performList: getFallbackRealUser, - - // In cases where Zapier needs to show an example record to the user, but we are unable to get a live example - // from the API, Zapier will fallback to this hard-coded sample. It should reflect the data structure of - // returned records, and have obviously dummy values that we can show to any user. - sample: { - id: 1, - createdAt: 1472069465, - lastname: 'DOE', - firstname: 'John', - email: 'john@doe.com', - address: 'Park Avenue', - zip: '12345', - town: 'NEW-YORK', - login: 'doe.john', - authorId: 1, - action: 'create' - }, - - // If the resource can have fields that are custom on a per-user basis, define a function to fetch the custom - // field definitions. The result will be used to augment the sample. - // outputFields: () => { return []; } - // Alternatively, a static field definition should be provided, to specify labels for the fields - outputFields: [ - {key: 'id', type: "integer", label: 'ID'}, - {key: 'createdAt', type: "integer", label: 'Created At'}, - {key: 'lastname', label: 'Lastname'}, - {key: 'firstname', label: 'Firstname'}, - {key: 'email', label: 'Email'}, - {key: 'address', label: 'Address'}, - {key: 'zip', label: 'Zip'}, - {key: 'town', label: 'Town'}, - {key: 'login', label: 'Login'}, - {key: 'authorId', type: "integer", label: 'Author ID'}, - {key: 'action', label: 'Action'} - ] - } -}; diff --git a/tools/flatpack/org.flatpak.Dolibarr.json b/tools/flatpack/org.flatpak.Dolibarr.json deleted file mode 100644 index 69140d32..00000000 --- a/tools/flatpack/org.flatpak.Dolibarr.json +++ /dev/null @@ -1 +0,0 @@ -"Help wanted..." \ No newline at end of file diff --git a/tools/patch/README b/tools/patch/README deleted file mode 100644 index 400fbc4f..00000000 --- a/tools/patch/README +++ /dev/null @@ -1,11 +0,0 @@ -README (English) -################################################## -Building a Patch file -################################################## - -This directory contains tools to build a patch -after a developer has made changes on files in its -Dolibarr tree. -The output patch file can then be submited on Dolibarr -dev mailing-list, with explanation on its goal, for -inclusion in main branch. diff --git a/tools/patch/buildpatch.sh b/tools/patch/buildpatch.sh deleted file mode 100644 index 3bbc6ea3..00000000 --- a/tools/patch/buildpatch.sh +++ /dev/null @@ -1,21 +0,0 @@ -#/bin/ksh -#---------------------------------------------------------------------------- -# \file build/patch/buildpatch.sh -# \brief Create patch files -# \author (c)2009-2011 Laurent Destailleur -#---------------------------------------------------------------------------- -# This script can be used to build a patch after a developer has made -# changes on files in its Dolibarr tree. -# The output patch file can then be submited on Dolibarr dev mailing-list, -# with explanation on its goal, for inclusion in main branch. -#---------------------------------------------------------------------------- - -echo ----- Building patch file mypatch.patch ----- -if [ -z "$1" ] || [ -z "$2" ]; -then - echo Usage: buildpatch.sh original_dir_path modified_dir_path - echo Example: buildpatch.sh /mydirA/dolibarrold /mydirB/dolibarrnew -else - echo Build patch between \"$1\" and \"$2\" - diff -BNaur --exclude=CVS --exclude="*.patch" --exclude=".#*" --exclude="*~" --exclude="*.rej" --exclude="*.orig" --exclude="*.bak" --exclude=conf.php --exclude=documents $1 $2 > mypatch.patch -fi -- 2.39.5

    0Y?kPQuSZEQ&zYWI=)UR} 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 A$N&HU diff --git a/doc/images/dolibarr_screenshot2_1280x800.jpg b/doc/images/dolibarr_screenshot2_1280x800.jpg deleted file mode 100644 index 2956a55d36aa8b86d46eae11e987f1c88c4c77e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159669 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%0Aq&_@9cyKK$hZ#2zu8Ci4Dv7+c0l)xt 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 O{@DZ9C;ia>e-i*~FhZ{Y diff --git a/doc/images/dolibarr_screenshot3_1280x800.png b/doc/images/dolibarr_screenshot3_1280x800.png deleted file mode 100644 index 00d57fc9fb26863426437e5cd404b7d3b2a112cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132113 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