From ef16a65ce887c7cfcf5c6137bfbcc15e2e0cbb3e Mon Sep 17 00:00:00 2001 From: TheCoreDev Date: Sat, 5 Dec 2020 09:32:52 +0100 Subject: [PATCH] =?UTF-8?q?Le=20module=20MondialRelay=20n'=C3=A9tait=20pas?= =?UTF-8?q?=20commit=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MondialRelay/Config/config-data.json | 269 ++++ local/modules/MondialRelay/Config/config.xml | 76 + local/modules/MondialRelay/Config/drop.sql | 8 + local/modules/MondialRelay/Config/module.xml | 26 + local/modules/MondialRelay/Config/routing.xml | 64 + local/modules/MondialRelay/Config/schema.xml | 42 + local/modules/MondialRelay/Config/thelia.sql | 78 + .../BackOffice/AreaAttributesController.php | 61 + .../BackOffice/ConfigurationController.php | 50 + .../BackOffice/InsuranceController.php | 102 ++ .../Controller/BackOffice/PriceController.php | 111 ++ .../Controller/FrontOffice/MapManagement.php | 44 + .../MondialRelay/Event/FindRelayEvent.php | 151 ++ .../MondialRelay/Event/MondialRelayEvents.php | 21 + .../EventListeners/DeliveryListener.php | 432 ++++++ .../EventListeners/SendDeliveryEmail.php | 68 + .../MondialRelay/Form/InsuranceCreateForm.php | 42 + .../Form/InsurancesUpdateForm.php | 50 + .../Form/PriceAttributesUpdateForm.php | 47 + .../MondialRelay/Form/PriceCreateForm.php | 42 + .../MondialRelay/Form/PricesUpdateForm.php | 48 + .../MondialRelay/Form/SettingsForm.php | 105 ++ .../MondialRelay/Hook/AdminHookManager.php | 57 + .../MondialRelay/Hook/EmailHookManager.php | 65 + .../MondialRelay/Hook/FrontHookManager.php | 53 + .../MondialRelay/Hook/PdfHookManager.php | 42 + .../I18n/backOffice/default/en_US.php | 30 + .../I18n/backOffice/default/fr_FR.php | 30 + .../MondialRelay/I18n/email/default/en_US.php | 15 + .../MondialRelay/I18n/email/default/fr_FR.php | 15 + local/modules/MondialRelay/I18n/en_US.php | 38 + local/modules/MondialRelay/I18n/fr_FR.php | 38 + .../I18n/frontOffice/default/en_US.php | 23 + .../I18n/frontOffice/default/fr_FR.php | 23 + .../MondialRelay/I18n/pdf/default/en_US.php | 6 + .../MondialRelay/I18n/pdf/default/fr_FR.php | 6 + local/modules/MondialRelay/LICENSE | 165 ++ .../MondialRelay/Loop/AreaAttributes.php | 76 + .../MondialRelay/Loop/DeliveryPrice.php | 209 +++ .../modules/MondialRelay/Loop/Insurances.php | 64 + .../MondialRelay/Loop/PickupPoints.php | 90 ++ local/modules/MondialRelay/Loop/Prices.php | 72 + .../MondialRelay/Loop/SelectedPickupPoint.php | 89 ++ .../Base/MondialRelayDeliveryInsurance.php | 1251 +++++++++++++++ .../MondialRelayDeliveryInsuranceQuery.php | 479 ++++++ .../Model/Base/MondialRelayDeliveryPrice.php | 1336 +++++++++++++++++ .../Base/MondialRelayDeliveryPriceQuery.php | 564 +++++++ .../Model/Base/MondialRelayPickupAddress.php | 1168 ++++++++++++++ .../Base/MondialRelayPickupAddressQuery.php | 422 ++++++ .../Base/MondialRelayZoneConfiguration.php | 1311 ++++++++++++++++ .../MondialRelayZoneConfigurationQuery.php | 564 +++++++ .../MondialRelayDeliveryInsuranceTableMap.php | 426 ++++++ .../Map/MondialRelayDeliveryPriceTableMap.php | 427 ++++++ .../Map/MondialRelayPickupAddressTableMap.php | 418 ++++++ .../MondialRelayZoneConfigurationTableMap.php | 427 ++++++ .../Model/MondialRelayDeliveryInsurance.php | 10 + .../MondialRelayDeliveryInsuranceQuery.php | 21 + .../Model/MondialRelayDeliveryPrice.php | 10 + .../Model/MondialRelayDeliveryPriceQuery.php | 21 + .../Model/MondialRelayPickupAddress.php | 20 + .../Model/MondialRelayPickupAddressQuery.php | 20 + .../Model/MondialRelayZoneConfiguration.php | 12 + .../MondialRelayZoneConfigurationQuery.php | 21 + local/modules/MondialRelay/MondialRelay.php | 234 +++ local/modules/MondialRelay/Readme.md | 39 + .../Solution-Web-Service-V5.4.pdf | Bin 0 -> 798163 bytes local/modules/MondialRelay/composer.json | 11 + local/modules/MondialRelay/composer.lock | 59 + local/modules/MondialRelay/images/logo-mr.png | Bin 0 -> 10940 bytes .../default/mondialrelay/ajax/general.html | 37 + .../default/mondialrelay/ajax/insurances.html | 98 ++ .../default/mondialrelay/ajax/prices.html | 158 ++ .../mondialrelay/assets/img/younivers.png | Bin 0 -> 5134 bytes .../assets/js/bootstrap-notify.min.js | 1 + .../assets/js/mondialrelay.js.html | 53 + .../mondialrelay/includes/error-dialog.html | 27 + .../mondialrelay/module-configuration.html | 38 + .../mondial-relay-tracking-message.html | 28 + .../mondial-relay-tracking-message.txt | 11 + .../mondialrelay/opening-hours-html.html | 26 + .../mondialrelay/opening-hours-text.html | 8 + .../mondialrelay/order-delivery-address.html | 13 + .../mondialrelay/assets/css/styles.css | 66 + .../mondialrelay/assets/img/maison.png | Bin 0 -> 2610 bytes .../assets/img/pins/pointsrelais_pin_1.png | Bin 0 -> 1397 bytes .../assets/img/pins/pointsrelais_pin_10.png | Bin 0 -> 1597 bytes .../assets/img/pins/pointsrelais_pin_11.png | Bin 0 -> 1507 bytes .../assets/img/pins/pointsrelais_pin_12.png | Bin 0 -> 1603 bytes .../assets/img/pins/pointsrelais_pin_13.png | Bin 0 -> 1619 bytes .../assets/img/pins/pointsrelais_pin_14.png | Bin 0 -> 1584 bytes .../assets/img/pins/pointsrelais_pin_15.png | Bin 0 -> 1636 bytes .../assets/img/pins/pointsrelais_pin_16.png | Bin 0 -> 1616 bytes .../assets/img/pins/pointsrelais_pin_17.png | Bin 0 -> 1615 bytes .../assets/img/pins/pointsrelais_pin_18.png | Bin 0 -> 1612 bytes .../assets/img/pins/pointsrelais_pin_19.png | Bin 0 -> 1600 bytes .../assets/img/pins/pointsrelais_pin_2.png | Bin 0 -> 1530 bytes .../assets/img/pins/pointsrelais_pin_20.png | Bin 0 -> 1670 bytes .../assets/img/pins/pointsrelais_pin_21.png | Bin 0 -> 1101 bytes .../assets/img/pins/pointsrelais_pin_22.png | Bin 0 -> 1164 bytes .../assets/img/pins/pointsrelais_pin_23.png | Bin 0 -> 1184 bytes .../assets/img/pins/pointsrelais_pin_24.png | Bin 0 -> 1156 bytes .../assets/img/pins/pointsrelais_pin_25.png | Bin 0 -> 1176 bytes .../assets/img/pins/pointsrelais_pin_26.png | Bin 0 -> 1173 bytes .../assets/img/pins/pointsrelais_pin_27.png | Bin 0 -> 1157 bytes .../assets/img/pins/pointsrelais_pin_28.png | Bin 0 -> 1174 bytes .../assets/img/pins/pointsrelais_pin_29.png | Bin 0 -> 1168 bytes .../assets/img/pins/pointsrelais_pin_3.png | Bin 0 -> 1540 bytes .../assets/img/pins/pointsrelais_pin_30.png | Bin 0 -> 1174 bytes .../assets/img/pins/pointsrelais_pin_4.png | Bin 0 -> 1500 bytes .../assets/img/pins/pointsrelais_pin_5.png | Bin 0 -> 1558 bytes .../assets/img/pins/pointsrelais_pin_6.png | Bin 0 -> 1537 bytes .../assets/img/pins/pointsrelais_pin_7.png | Bin 0 -> 1522 bytes .../assets/img/pins/pointsrelais_pin_8.png | Bin 0 -> 1533 bytes .../assets/img/pins/pointsrelais_pin_9.png | Bin 0 -> 1526 bytes .../mondialrelay/delivery-address.html | 18 + .../mondialrelay/order-delivery-address.html | 26 + .../mondialrelay/order-delivery-extra.html | 347 +++++ .../default/mondialrelay/opening-hours.html | 30 + .../mondialrelay/order-delivery-address.html | 12 + .../modules/MondialRelay/vendor/autoload.php | 7 + .../vendor/composer/ClassLoader.php | 445 ++++++ .../MondialRelay/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 9 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 10 + .../vendor/composer/autoload_real.php | 52 + .../vendor/composer/autoload_static.php | 31 + .../vendor/composer/installed.json | 43 + .../xaviborja/php-mondialrelay-api/Readme.md | 5 + .../php-mondialrelay-api/bin/phpunit | 1 + .../php-mondialrelay-api/composer.json | 26 + .../php-mondialrelay-api/composer.lock | 1334 ++++++++++++++++ .../php-mondialrelay-api/phpunit.xml.dist | 24 + .../src/MondialRelay/ApiClient.php | 132 ++ .../BussinessHours/BussinessHours.php | 51 + .../BussinessHours/BussinessHoursFactory.php | 39 + .../MondialRelay/Expedition/Expedition.php | 124 ++ .../Expedition/ExpeditionFactory.php | 34 + .../src/MondialRelay/Point/Point.php | 112 ++ .../src/MondialRelay/Point/PointFactory.php | 51 + .../src/MondialRelay/Ticket/Ticket.php | 63 + .../src/MondialRelay/Ticket/TicketFactory.php | 13 + .../tests/MondialRelay/ApiClientTest.php | 185 +++ 143 files changed, 16232 insertions(+) create mode 100644 local/modules/MondialRelay/Config/config-data.json create mode 100644 local/modules/MondialRelay/Config/config.xml create mode 100644 local/modules/MondialRelay/Config/drop.sql create mode 100644 local/modules/MondialRelay/Config/module.xml create mode 100644 local/modules/MondialRelay/Config/routing.xml create mode 100644 local/modules/MondialRelay/Config/schema.xml create mode 100644 local/modules/MondialRelay/Config/thelia.sql create mode 100644 local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php create mode 100644 local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php create mode 100644 local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php create mode 100644 local/modules/MondialRelay/Controller/BackOffice/PriceController.php create mode 100644 local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php create mode 100644 local/modules/MondialRelay/Event/FindRelayEvent.php create mode 100644 local/modules/MondialRelay/Event/MondialRelayEvents.php create mode 100644 local/modules/MondialRelay/EventListeners/DeliveryListener.php create mode 100644 local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php create mode 100644 local/modules/MondialRelay/Form/InsuranceCreateForm.php create mode 100644 local/modules/MondialRelay/Form/InsurancesUpdateForm.php create mode 100644 local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php create mode 100644 local/modules/MondialRelay/Form/PriceCreateForm.php create mode 100644 local/modules/MondialRelay/Form/PricesUpdateForm.php create mode 100644 local/modules/MondialRelay/Form/SettingsForm.php create mode 100644 local/modules/MondialRelay/Hook/AdminHookManager.php create mode 100644 local/modules/MondialRelay/Hook/EmailHookManager.php create mode 100644 local/modules/MondialRelay/Hook/FrontHookManager.php create mode 100644 local/modules/MondialRelay/Hook/PdfHookManager.php create mode 100644 local/modules/MondialRelay/I18n/backOffice/default/en_US.php create mode 100644 local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php create mode 100644 local/modules/MondialRelay/I18n/email/default/en_US.php create mode 100644 local/modules/MondialRelay/I18n/email/default/fr_FR.php create mode 100644 local/modules/MondialRelay/I18n/en_US.php create mode 100644 local/modules/MondialRelay/I18n/fr_FR.php create mode 100644 local/modules/MondialRelay/I18n/frontOffice/default/en_US.php create mode 100644 local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php create mode 100644 local/modules/MondialRelay/I18n/pdf/default/en_US.php create mode 100644 local/modules/MondialRelay/I18n/pdf/default/fr_FR.php create mode 100644 local/modules/MondialRelay/LICENSE create mode 100644 local/modules/MondialRelay/Loop/AreaAttributes.php create mode 100644 local/modules/MondialRelay/Loop/DeliveryPrice.php create mode 100644 local/modules/MondialRelay/Loop/Insurances.php create mode 100644 local/modules/MondialRelay/Loop/PickupPoints.php create mode 100644 local/modules/MondialRelay/Loop/Prices.php create mode 100644 local/modules/MondialRelay/Loop/SelectedPickupPoint.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php create mode 100644 local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php create mode 100644 local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php create mode 100644 local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php create mode 100644 local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php create mode 100644 local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayDeliveryInsuranceQuery.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayDeliveryPrice.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayDeliveryPriceQuery.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayPickupAddress.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayPickupAddressQuery.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayZoneConfiguration.php create mode 100644 local/modules/MondialRelay/Model/MondialRelayZoneConfigurationQuery.php create mode 100644 local/modules/MondialRelay/MondialRelay.php create mode 100644 local/modules/MondialRelay/Readme.md create mode 100644 local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf create mode 100644 local/modules/MondialRelay/composer.json create mode 100644 local/modules/MondialRelay/composer.lock create mode 100644 local/modules/MondialRelay/images/logo-mr.png create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/general.html create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html create mode 100644 local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html create mode 100644 local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html create mode 100644 local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt create mode 100644 local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html create mode 100644 local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html create mode 100644 local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_10.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_13.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_15.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_17.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_18.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_2.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_20.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_22.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_23.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_25.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_26.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_28.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_29.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_3.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_30.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_5.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_8.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/delivery-address.html create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html create mode 100644 local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html create mode 100644 local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html create mode 100644 local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html create mode 100644 local/modules/MondialRelay/vendor/autoload.php create mode 100644 local/modules/MondialRelay/vendor/composer/ClassLoader.php create mode 100644 local/modules/MondialRelay/vendor/composer/LICENSE create mode 100644 local/modules/MondialRelay/vendor/composer/autoload_classmap.php create mode 100644 local/modules/MondialRelay/vendor/composer/autoload_namespaces.php create mode 100644 local/modules/MondialRelay/vendor/composer/autoload_psr4.php create mode 100644 local/modules/MondialRelay/vendor/composer/autoload_real.php create mode 100644 local/modules/MondialRelay/vendor/composer/autoload_static.php create mode 100644 local/modules/MondialRelay/vendor/composer/installed.json create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/Point.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php create mode 100644 local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/tests/MondialRelay/ApiClientTest.php diff --git a/local/modules/MondialRelay/Config/config-data.json b/local/modules/MondialRelay/Config/config-data.json new file mode 100644 index 00000000..badcd50d --- /dev/null +++ b/local/modules/MondialRelay/Config/config-data.json @@ -0,0 +1,269 @@ +{ + "shippingZones": [ + { + "name": "Mondial Relay - Relay delivery Zone 1", + "delivery_time_in_days": 3, + "delivery_type": 1, + "countries": [ + "FRA", + "BEL", + "LUX", + "MCO" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 4.55 + }, + { + "up_to": 1, + "price_euro": 5.25 + }, + { + "up_to": 2, + "price_euro": 5.95 + }, + { + "up_to": 3, + "price_euro": 6.80 + }, + { + "up_to": 5, + "price_euro": 8 + }, + { + "up_to": 7, + "price_euro": 10.50 + }, + { + "up_to": 10, + "price_euro": 12.75 + }, + { + "up_to": 15, + "price_euro": 15.35 + }, + { + "up_to": 30, + "price_euro": 19.10 + } + ] + }, + { + "name": "Mondial Relay - Relay delivery Zone 2", + "delivery_time_in_days": 5, + "delivery_type": 1, + "countries": [ + "ESP" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 8.40 + }, + { + "up_to": 1, + "price_euro": 9 + }, + { + "up_to": 2, + "price_euro": 9.80 + }, + { + "up_to": 3, + "price_euro": 10.50 + }, + { + "up_to": 5, + "price_euro": 12.80 + }, + { + "up_to": 7, + "price_euro": 15.20 + }, + { + "up_to": 10, + "price_euro": 17.40 + }, + { + "up_to": 15, + "price_euro": 22.80 + }, + { + "up_to": 30, + "price_euro": 27.50 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 1", + "delivery_time_in_days": 3, + "delivery_type": 2, + "countries": [ + "DEU", + "BEL", + "LUX" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 9.50 + }, + { + "up_to": 1, + "price_euro": 9.50 + }, + { + "up_to": 2, + "price_euro": 10.20 + }, + { + "up_to": 3, + "price_euro": 10.90 + }, + { + "up_to": 5, + "price_euro": 12.30 + }, + { + "up_to": 7, + "price_euro": 13.70 + }, + { + "up_to": 10, + "price_euro": 15.80 + }, + { + "up_to": 15, + "price_euro": 19.30 + }, + { + "up_to": 30, + "price_euro": 29.80 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 2", + "delivery_time_in_days": 5, + "delivery_type": 2, + "countries": [ + "GBR", + "ESP" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 10.20 + }, + { + "up_to": 1, + "price_euro": 10.20 + }, + { + "up_to": 2, + "price_euro": 11.30 + }, + { + "up_to": 3, + "price_euro": 12.40 + }, + { + "up_to": 5, + "price_euro": 14.60 + }, + { + "up_to": 7, + "price_euro": 16.80 + }, + { + "up_to": 10, + "price_euro": 20.10 + }, + { + "up_to": 15, + "price_euro": 25.60 + }, + { + "up_to": 30, + "price_euro": 36.60 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 3", + "delivery_time_in_days": 6, + "delivery_type": 2, + "countries": [ + "ITA", + "PRT", + "AUT" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 11.20 + }, + { + "up_to": 1, + "price_euro": 11.20 + }, + { + "up_to": 2, + "price_euro": 12.30 + }, + { + "up_to": 3, + "price_euro": 13.40 + }, + { + "up_to": 5, + "price_euro": 15.60 + }, + { + "up_to": 7, + "price_euro": 17.80 + }, + { + "up_to": 10, + "price_euro": 21.10 + }, + { + "up_to": 15, + "price_euro": 26.60 + }, + { + "up_to": 30, + "price_euro": 37.60 + } + ] + } + ], + "insurances": [ + { + "level": 1, + "value": 50, + "price_with_tax_euro": 2 + }, + { + "level": 2, + "value": 125, + "price_with_tax_euro": 3.50 + }, + { + "level": 3, + "value": 250, + "price_with_tax_euro": 5 + }, + { + "level": 4, + "value": 375, + "price_with_tax_euro": 6.50 + }, + { + "level": 5, + "value": 500, + "price_with_tax_euro": 8 + } + ] +} diff --git a/local/modules/MondialRelay/Config/config.xml b/local/modules/MondialRelay/Config/config.xml new file mode 100644 index 00000000..da38c0d4 --- /dev/null +++ b/local/modules/MondialRelay/Config/config.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/MondialRelay/Config/drop.sql b/local/modules/MondialRelay/Config/drop.sql new file mode 100644 index 00000000..1bc8e1d5 --- /dev/null +++ b/local/modules/MondialRelay/Config/drop.sql @@ -0,0 +1,8 @@ +SET FOREIGN_KEY_CHECKS = 0; + +DROP TABLE IF EXISTS `mondial_relay_pickup_address`; +DROP TABLE IF EXISTS `mondial_relay_delivery_price`; +DROP TABLE IF EXISTS `mondial_relay_delivery_insurance`; +DROP TABLE IF EXISTS `mondial_relay_zone_configuration`; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/MondialRelay/Config/module.xml b/local/modules/MondialRelay/Config/module.xml new file mode 100644 index 00000000..21a86e95 --- /dev/null +++ b/local/modules/MondialRelay/Config/module.xml @@ -0,0 +1,26 @@ + + + MondialRelay\MondialRelay + + Mondial Relay delivery + + + Livraison avec Mondial Relay + + + en_US + fr_FR + + 1.0.7 + + Franck Allimant + CQFDev + thelia@cqfdev.fr + www.cqfdev.fr + + delivery + 2.3.0 + prod + diff --git a/local/modules/MondialRelay/Config/routing.xml b/local/modules/MondialRelay/Config/routing.xml new file mode 100644 index 00000000..6038551b --- /dev/null +++ b/local/modules/MondialRelay/Config/routing.xml @@ -0,0 +1,64 @@ + + + + + + + + + MondialRelay\Controller\BackOffice\ConfigurationController::saveAction + + + + + + + MondialRelay\Controller\BackOffice\AreaAttributesController::saveAction + \d+ + \d+ + + + + + + MondialRelay\Controller\BackOffice\PriceController::saveAction + \d+ + \d+ + + + + MondialRelay\Controller\BackOffice\PriceController::createAction + \d+ + \d+ + + + + MondialRelay\Controller\BackOffice\PriceController::deleteAction + \d+ + \d+ + + + + + + MondialRelay\Controller\BackOffice\InsuranceController::saveAction + + + + MondialRelay\Controller\BackOffice\InsuranceController::createAction + + + + MondialRelay\Controller\BackOffice\InsuranceController::deleteAction + \d+ + + + + + + MondialRelay\Controller\FrontOffice\MapManagement::getRelayMapAction + + + diff --git a/local/modules/MondialRelay/Config/schema.xml b/local/modules/MondialRelay/Config/schema.xml new file mode 100644 index 00000000..9fe7b73d --- /dev/null +++ b/local/modules/MondialRelay/Config/schema.xml @@ -0,0 +1,42 @@ + + + + + + + +
+ + + + + + + + + + +
+ + + + + + +
+ + + + + + + + + + +
+ + +
diff --git a/local/modules/MondialRelay/Config/thelia.sql b/local/modules/MondialRelay/Config/thelia.sql new file mode 100644 index 00000000..59ad01ba --- /dev/null +++ b/local/modules/MondialRelay/Config/thelia.sql @@ -0,0 +1,78 @@ + +# This is a fix for InnoDB in MySQL >= 4.1.x +# It "suspends judgement" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; + +-- --------------------------------------------------------------------- +-- mondial_relay_pickup_address +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_pickup_address`; + +CREATE TABLE `mondial_relay_pickup_address` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `json_relay_data` LONGTEXT NOT NULL, + `order_address_id` INTEGER NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_delivery_price +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_delivery_price`; + +CREATE TABLE `mondial_relay_delivery_price` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `max_weight` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `price_with_tax` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `area_id` INTEGER NOT NULL, + PRIMARY KEY (`id`), + INDEX `fi_mondial_relay_delivery_price_area_id` (`area_id`), + CONSTRAINT `fk_mondial_relay_delivery_price_area_id` + FOREIGN KEY (`area_id`) + REFERENCES `area` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_delivery_insurance +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_delivery_insurance`; + +CREATE TABLE `mondial_relay_delivery_insurance` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `level` INTEGER NOT NULL, + `max_value` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `price_with_tax` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_zone_configuration +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_zone_configuration`; + +CREATE TABLE `mondial_relay_zone_configuration` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `delivery_time` INTEGER NOT NULL, + `delivery_type` INTEGER(1) NOT NULL, + `area_id` INTEGER NOT NULL, + PRIMARY KEY (`id`), + INDEX `fi_mondial_relay_zone_configuration_area_id` (`area_id`), + CONSTRAINT `fk_mondial_relay_zone_configuration_area_id` + FOREIGN KEY (`area_id`) + REFERENCES `area` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php b/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php new file mode 100644 index 00000000..5f76b0fa --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php @@ -0,0 +1,61 @@ + + */ +class AreaAttributesController extends BaseAdminController +{ + public function saveAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.area_attributes_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + if (null === $zoneConfig = MondialRelayZoneConfigurationQuery::create()->findOneByAreaId($areaId)) { + $zoneConfig = new MondialRelayZoneConfiguration(); + } + + $zoneConfig + ->setAreaId($areaId) + ->setDeliveryTime($data['delivery_time']) + ->setDeliveryType($data['delivery_type']) + ->save(); + + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate area attributes form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php b/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php new file mode 100644 index 00000000..21c941d6 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php @@ -0,0 +1,50 @@ + + */ +class ConfigurationController extends BaseAdminController +{ + public function saveAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.settings_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + foreach ($data as $name => $value) { + MondialRelay::setConfigValue($name, $value); + } + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate configuration form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/general', [ 'error_message' => $errorMessage ]); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php b/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php new file mode 100644 index 00000000..7447ace0 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php @@ -0,0 +1,102 @@ + + */ +class InsuranceController extends BaseAdminController +{ + public function saveAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.insurances_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + foreach ($data['max_value'] as $key => $value) { + if (null !== $insurance = MondialRelayDeliveryInsuranceQuery::create()->findPk($key)) { + $insurance + ->setMaxValue($value) + ->setPriceWithTax($data['price_with_tax'][$key]) + ->save(); + } + } + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate insurances form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/insurances', [ 'error_message' => $errorMessage ]); + } + + public function createAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.insurance_create_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryInsuranceQuery::create()->filterByMaxValue($data['max_value'])->delete(); + + (new MondialRelayDeliveryInsurance()) + ->setPriceWithTax($data['price_with_tax']) + ->setMaxValue($data['max_value']) + ->save(); + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate insurances form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/insurances', [ 'error_message' => $errorMessage ]); + } + + /** + * @param $insuranceId + * @return mixed|\Thelia\Core\HttpFoundation\Response + * @throws \Propel\Runtime\Exception\PropelException + */ + public function deleteAction($insuranceId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::DELETE)) { + return $response; + } + + MondialRelayDeliveryInsuranceQuery::create()->filterById($insuranceId)->delete(); + + return $this->render('mondialrelay/ajax/insurances'); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/PriceController.php b/local/modules/MondialRelay/Controller/BackOffice/PriceController.php new file mode 100644 index 00000000..807446c2 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/PriceController.php @@ -0,0 +1,111 @@ + + */ +class PriceController extends BaseAdminController +{ + public function saveAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.prices_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryPriceQuery::create()->filterByAreaId($areaId)->delete(); + + foreach ($data['max_weight'] as $key => $value) { + (new MondialRelayDeliveryPrice()) + ->setAreaId($areaId) + ->setMaxWeight($value) + ->setPriceWithTax($data['price'][$key]) + ->save(); + } + + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate price form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } + + public function createAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.price_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryPriceQuery::create()->filterByMaxWeight($data['max_weight'])->delete(); + + (new MondialRelayDeliveryPrice()) + ->setAreaId($areaId) + ->setPriceWithTax($data['price']) + ->setMaxWeight($data['max_weight']) + ->save(); + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate price form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } + + /** + * @param $insuranceId + * @return mixed|\Thelia\Core\HttpFoundation\Response + * @throws \Propel\Runtime\Exception\PropelException + */ + public function deleteAction($priceId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::DELETE)) { + return $response; + } + + MondialRelayDeliveryPriceQuery::create()->filterById($priceId)->delete(); + + return $this->render('mondialrelay/ajax/prices', [ 'module_id' => $moduleId ]); + } +} diff --git a/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php b/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php new file mode 100644 index 00000000..00411c98 --- /dev/null +++ b/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php @@ -0,0 +1,44 @@ + + * Date: 12/03/2018 10:41 + */ + +namespace MondialRelay\Controller\FrontOffice; + +use MondialRelay\Event\FindRelayEvent; +use MondialRelay\Event\MondialRelayEvents; +use Thelia\Controller\Front\BaseFrontController; +use Thelia\Core\HttpFoundation\JsonResponse; + +require __DIR__ . "/../../vendor/autoload.php"; + +class MapManagement extends BaseFrontController +{ + public function getRelayMapAction() + { + $event = new FindRelayEvent( + intval($this->getRequest()->get('country_id', 0)), + $this->getRequest()->get('city', ''), + $this->getRequest()->get('zipcode', ''), + floatval($this->getRequest()->get('radius', 10)) + ); + + $this->getDispatcher()->dispatch(MondialRelayEvents::FIND_RELAYS, $event); + + + return new JsonResponse([ + 'points' => $event->getPoints(), + 'error' => $event->getError() + ]); + } +} diff --git a/local/modules/MondialRelay/Event/FindRelayEvent.php b/local/modules/MondialRelay/Event/FindRelayEvent.php new file mode 100644 index 00000000..31693538 --- /dev/null +++ b/local/modules/MondialRelay/Event/FindRelayEvent.php @@ -0,0 +1,151 @@ + + * Date: 28/04/2016 14:41 + */ +namespace MondialRelay\Event; + +use Thelia\Core\Event\ActionEvent; + +class FindRelayEvent extends ActionEvent +{ + /** @var int */ + protected $countryId; + + /** @var string */ + protected $city; + + /** @var string */ + protected $zipcode; + + /** @var float */ + protected $searchRadius; + + /** @var array */ + protected $points; + + /** @var string */ + protected $numPointRelais = ''; + + /** @var bool */ + protected $error = ''; + + /** + * FindRelayEvent constructor. + * @param int $countryId + * @param string $city + * @param string $zipcode + * @param float $searchRadius + */ + public function __construct($countryId, $city, $zipcode, $searchRadius) + { + $this->countryId = $countryId; + $this->city = $city; + $this->zipcode = $zipcode; + $this->searchRadius = $searchRadius; + } + + /** + * @return int + */ + public function getCountryId() + { + return $this->countryId; + } + + /** + * @return string + */ + public function getCity() + { + return $this->city; + } + + /** + * @return string + */ + public function getZipcode() + { + return $this->zipcode; + } + + /** + * @return float + */ + public function getSearchRadius() + { + return $this->searchRadius; + } + + /** + * @return array + */ + public function getPoints() + { + return $this->points; + } + + /** + * @param array $points + * @return $this + */ + public function setPoints($points) + { + $this->points = $points; + return $this; + } + + /** + * @return string + */ + public function getNumPointRelais() + { + return $this->numPointRelais; + } + + /** + * @param string $numPointRelais + * @return $this + */ + public function setNumPointRelais($numPointRelais) + { + $this->numPointRelais = $numPointRelais; + return $this; + } + + /** + * @return bool + */ + public function hasError() + { + return ! empty($this->error); + } + + /** + * @param string $error + * @return $this + */ + public function setError($error) + { + $this->error = $error; + return $this; + } + + /** + * @return string $error + */ + public function getError() + { + return $this->error; + } +} diff --git a/local/modules/MondialRelay/Event/MondialRelayEvents.php b/local/modules/MondialRelay/Event/MondialRelayEvents.php new file mode 100644 index 00000000..8dbb215d --- /dev/null +++ b/local/modules/MondialRelay/Event/MondialRelayEvents.php @@ -0,0 +1,21 @@ + + * Date: 12/03/2018 19:39 + */ + +namespace MondialRelay\Event; + +class MondialRelayEvents +{ + const FIND_RELAYS = "mondialrelay.event.find-relays"; +} diff --git a/local/modules/MondialRelay/EventListeners/DeliveryListener.php b/local/modules/MondialRelay/EventListeners/DeliveryListener.php new file mode 100644 index 00000000..a3e26ab6 --- /dev/null +++ b/local/modules/MondialRelay/EventListeners/DeliveryListener.php @@ -0,0 +1,432 @@ +requestStack = $requestStack; + } + + /** + * @return ApiClient + * @throws \SoapFault + */ + protected function getWebServiceClient() + { + return new ApiClient( + new \SoapClient( + MondialRelay::getConfigValue(MondialRelay::WEBSERVICE_URL) + ), + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY) + ); + } + + /** + * @param DeliveryPostageEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function processDeliveryPostageEvent(DeliveryPostageEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $valid = false; + + /** @var Request $session */ + $request = $this->requestStack->getCurrentRequest(); + + /** @var Session $session */ + $session = $request->getSession(); + + // Get and store selected delivery type, if it is defined + switch($request->get('mondial-relay-selected-delivery-mode')) { + case 'pickup': + $selectedDeliveryType = MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE; + break; + case 'home': + $selectedDeliveryType = MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE; + break; + default: + $selectedDeliveryType = $session->get(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + } + + if (null !== $selectedDeliveryType) { + $session->set(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE, $selectedDeliveryType); + } + + // Use the minimum weight if the cart is below this minimum. + $weight = max(MondialRelay::MIN_WEIGHT_KG, $session->getSessionCart($dispatcher)->getWeight()); + + if ($weight <= MondialRelay::MAX_WEIGHT_KG) { + $moduleModel = ModuleQuery::create()->findOneByCode(MondialRelay::getModuleCode()); + + // Find all allowed delivery types for the destination country + $countryHasRelay = $countryHasHome = false; + + $countryInAreaList = CountryAreaQuery::findByCountryAndState($event->getCountry(), $event->getState()); + + $price = PHP_INT_MAX; + + /** @var CountryArea $countryInArea */ + foreach ($countryInAreaList as $countryInArea) { + $areas = AreaDeliveryModuleQuery::create()->filterByAreaId($countryInArea->getAreaId()) + ->filterByModule($moduleModel) + ->find(); + + /** @var AreaDeliveryModule $area */ + foreach ($areas as $area) { + if (null !== $zoneConfig = MondialRelayZoneConfigurationQuery::create()->findOneByAreaId($area->getAreaId())) { + $zoneDeliveryType = $zoneConfig->getDeliveryType(); + + switch ($zoneDeliveryType) { + case MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE: + $countryHasRelay = $countryHasHome = true; + break; + case MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE: + $countryHasHome = true; + break; + case MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE: + $countryHasRelay = true; + break; + } + + // If the area delivery type matches the selected one, or if no zone is selected + if (null === $selectedDeliveryType || $zoneDeliveryType === $selectedDeliveryType) { + // Check if we have a price slice + if (null !== $deliveryPrice = MondialRelayDeliveryPriceQuery::create() + ->filterByAreaId($area->getAreaId()) + ->filterByMaxWeight($weight, Criteria::GREATER_EQUAL) + ->orderByMaxWeight(Criteria::ASC) + ->findOne()) { + $price = min($price, $deliveryPrice->getPriceWithTax()); + + $deliveryDelay = $zoneConfig->getDeliveryTime(); + } + } + } + } + } + + $relayAllowed = MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY, true); + $homeAllowed = MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY, true); + + if (($countryHasHome && $homeAllowed) || ($countryHasRelay && $relayAllowed) && $price !== PHP_INT_MAX) { + // The module could be used ! + $valid = true; + + $deliveryDate = (new \DateTime())->add(new \DateInterval("P" . $deliveryDelay . "D")); + + $event + ->setPostage($price) + ->setDeliveryDate($deliveryDate); + } + } + + $event->setValidModule($valid); + + $event->stopPropagation(); + } + + protected function makeHoraire($str) + { + return substr($str, 0, 2) . ':' . substr($str, 2); + } + + /** + * @param FindRelayEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + * @throws \Exception + */ + public function findRelays(FindRelayEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $days = [ + 'monday' => Translator::getInstance()->trans("Monday"), + 'tuesday' => Translator::getInstance()->trans("Tuesday"), + 'wednesday' => Translator::getInstance()->trans("Wednesday"), + 'thursday' => Translator::getInstance()->trans("Thursday"), + 'friday' => Translator::getInstance()->trans("Friday"), + 'saturday' => Translator::getInstance()->trans("Saturday"), + 'sunday' => Translator::getInstance()->trans("Sunday") + ]; + + $points = []; + + if (null !== $country = CountryQuery::create()->findPk($event->getCountryId())) { + $apiClient = new ApiClient( + new \SoapClient(MondialRelay::getConfigValue(MondialRelay::WEBSERVICE_URL)), + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY) + ); + + $cartWeightInGrammes = 1000 * $this->requestStack + ->getCurrentRequest() + ->getSession() + ->getSessionCart($dispatcher) + ->getWeight(); + + $requestParams = [ + 'NumPointRelais' => $event->getNumPointRelais(), + 'Pays' => strtoupper($country->getIsoalpha2()), + 'Ville' => $event->getCity(), + 'CP' => $event->getZipcode(), + //'Latitude' => "", + //'Longitude' => "", + //'Taille' => "", + 'Poids' => $cartWeightInGrammes, + //'Action' => "", + //'DelaiEnvoi' => "0", + 'RayonRecherche' => $event->getSearchRadius() + ]; + + try { + $points = $apiClient->findDeliveryPoints($requestParams); + } catch (\Exception $ex) { + $points = []; + + $event->setError($ex->getMessage()); + } + } + + $normalizedPoints = []; + + /** @var Point $point */ + foreach ($points as $point) { + $normalizedPoint = [ + 'id' => $point->id(), + 'latitude' => $point->latitude(), + 'longitude' => $point->longitude(), + 'zipcode' => $point->cp(), + 'city' => $point->city(), + 'country' => $point->country(), + 'distance' => $point->distance(), + 'distance_km' => round($point->distance() / 1000, 1) + ]; + + $addresses = $point->address(); + + $nom = $addresses[0]; + if (! empty($adresses[1])) { + $nom .= '
' . $addresses[1]; + } + + $normalizedPoint["name"] = $nom; + + $address = $addresses[2]; + if (! empty($adresses[3])) { + $address .= '
' . $addresses[3]; + } + + $normalizedPoint["address"] = $address; + + + $horaires = []; + + /** @var BussinessHours $horaire */ + foreach ($point->business_hours() as $horaire) { + if ($horaire->openingTime1() != '0000' && $horaire->openingTime2() !== '0000') { + $data = [ 'day' => $days[$horaire->day()]]; + + $o1 = $horaire->openingTime1(); + $o2 = $horaire->openingTime2(); + + if (! empty($o1) && $o1 != '0000') { + $data['opening_time_1'] = $this->makeHoraire($horaire->openingTime1()); + $data['closing_time_1'] = $this->makeHoraire($horaire->closingTime1()); + } + + if (! empty($o2) && $o2 != '0000') { + $data['opening_time_2'] = $this->makeHoraire($horaire->openingTime2()); + $data['closing_time_2'] = $this->makeHoraire($horaire->closingTime2()); + } + + $horaires[] = $data; + } + } + + $normalizedPoint["openings"] = $horaires; + + $normalizedPoints[] = $normalizedPoint; + } + + $event->setPoints($normalizedPoints); + } + + /** + * Update the order delivery address with MondialRelay point data + * + * @param OrderEvent $event + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateOrderDeliveryAddress(OrderEvent $event) + { + /** @var Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + + if (null !== $mrAddressId = $session->get(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + if (null !== $mrRelayPickup = MondialRelayPickupAddressQuery::create()->findPk($mrAddressId)) { + if (false !== $relayData = json_decode($mrRelayPickup->getJsonRelayData(), true)) { + if (null !== $orderAddress = OrderAddressQuery::create()->findPK($event->getOrder()->getDeliveryOrderAddressId())) { + $orderAddress + ->setCompany($relayData['name']) + ->setFirstname( + Translator::getInstance()->trans( + "Pickup relay #%number", + [ '%number' => $relayData['id']], + MondialRelay::DOMAIN_NAME + ) + ) + ->setLastname('') + ->setAddress1($relayData['address']) + ->setAddress2('') + ->setAddress3('') + ->setZipcode($relayData['zipcode']) + ->setCity($relayData['city']) + ->setCountry(CountryQuery::create()->findOneByIsoalpha2($relayData['country'])) + ->save(); + + $mrRelayPickup + ->setOrderAddressId($orderAddress->getId()) + ->save(); + } + } + } + } + } + + /** + * @param OrderEvent $event + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateCurrentDeliveryAddress(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + /** @var Request $request */ + $request = $this->requestStack->getCurrentRequest(); + + /** @var Session $session */ + $session = $request->getSession(); + + // Reset stored pickup address, if any + if (null !== $mrAddressId = $session->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + // Do not delete, as the customer may have do a back, and restart another order + // MondialRelayPickupAddressQuery::create()->filterById($mrAddressId)->delete(); + } + + if ($event->getDeliveryModule() == MondialRelay::getModuleId()) { + // Check selected MondialRlay mode + $mode = $request->get('mondial-relay-selected-delivery-mode'); + + if ($mode == 'pickup') { + // Get the selected pickup relay + if (null !== $relayId = $request->get('mondialrelay_relay', null)) { + $countryId = $request->get('mondial_relay_country_id', 0); + + // Load pickup data for the selected point + $relayDataEvent = new FindRelayEvent($countryId, '', '', 0); + $relayDataEvent->setNumPointRelais($relayId); + + $dispatcher->dispatch(MondialRelayEvents::FIND_RELAYS, $relayDataEvent); + + // We're supposed to get only one point + $points = $relayDataEvent->getPoints(); + + if (isset($points[0])) { + // Create a new record to store the pickup data + $pickupAddress = new MondialRelayPickupAddress(); + $pickupAddress + ->setJsonRelayData(json_encode($points[0])) + ->save(); + + $session->set(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID, $pickupAddress->getId()); + } + } else { + throw new TheliaProcessException("No Mondial Relay pickeup relay selected."); + } + } elseif ($mode !== 'home') { + throw new TheliaProcessException("Mondial Relay delivery mode was not selected."); + } + } + } + + /** + * Clear stored information once the order has been processed. + * + * @param OrderEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + */ + public function clearDeliveryData(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $session = $this->requestStack->getCurrentRequest()->getSession(); + + // Clear the session context + $session->remove(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + $session->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID); + } + + public static function getSubscribedEvents() + { + return [ + TheliaEvents::getModuleEvent( + TheliaEvents::MODULE_DELIVERY_GET_POSTAGE, + MondialRelay::getModuleCode() + ) => [ "processDeliveryPostageEvent", 128 ], + TheliaEvents::ORDER_SET_DELIVERY_MODULE => ['updateCurrentDeliveryAddress', 64], + TheliaEvents::ORDER_BEFORE_PAYMENT => ['updateOrderDeliveryAddress', 256], + TheliaEvents::ORDER_CART_CLEAR => ['clearDeliveryData', 256], + + MondialRelayEvents::FIND_RELAYS => [ "findRelays" , 128] + ]; + } +} diff --git a/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php b/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php new file mode 100644 index 00000000..165f9314 --- /dev/null +++ b/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php @@ -0,0 +1,68 @@ +mailer = $mailer; + } + + /** + * @param OrderEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateStatus(OrderEvent $event) + { + $order = $event->getOrder(); + + $deliveryRef = $order->getDeliveryRef(); + + if ($order->isSent() + && + ! empty($deliveryRef) + && + $order->getDeliveryModuleId() == MondialRelay::getModuleId() + ) { + if (null !== $contactEmail = ConfigQuery::read('store_email')) { + $this->mailer->sendEmailToCustomer( + MondialRelay::TRACKING_MESSAGE_NAME, + $order->getCustomer(), + [ + 'order_id' => $order->getId(), + ] + ); + } + } + } + + public static function getSubscribedEvents() + { + return array( + TheliaEvents::ORDER_UPDATE_STATUS => array("updateStatus", 128) + ); + } +} diff --git a/local/modules/MondialRelay/Form/InsuranceCreateForm.php b/local/modules/MondialRelay/Form/InsuranceCreateForm.php new file mode 100644 index 00000000..9460cc94 --- /dev/null +++ b/local/modules/MondialRelay/Form/InsuranceCreateForm.php @@ -0,0 +1,42 @@ + + */ +class InsuranceCreateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_value', + 'number', + [ + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Cart value', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'price_with_tax', + 'number', + [ + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Insurance price', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/InsurancesUpdateForm.php b/local/modules/MondialRelay/Form/InsurancesUpdateForm.php new file mode 100644 index 00000000..2f2c8d51 --- /dev/null +++ b/local/modules/MondialRelay/Form/InsurancesUpdateForm.php @@ -0,0 +1,50 @@ + + */ +class InsurancesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_value', + 'collection', + [ + "type" => 'number', + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Cart value', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ ], + 'allow_add' => true, + 'allow_delete' => true, + ] + )->add( + 'price_with_tax', + 'collection', + [ + "type" => 'number', + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Insurance price', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ ], + 'allow_add' => true, + 'allow_delete' => true, + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php b/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php new file mode 100644 index 00000000..21d85ded --- /dev/null +++ b/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php @@ -0,0 +1,47 @@ + + */ +class PriceAttributesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'delivery_time', + 'integer', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Delivery delay', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'delivery_type', + 'choice', + [ + "choices" => [ + MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE => $this->translator->trans('Relay delivery', [], MondialRelay::DOMAIN_NAME), + MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE => $this->translator->trans('Home delivery', [], MondialRelay::DOMAIN_NAME), + MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE => $this->translator->trans('Home and relay delivery', [], MondialRelay::DOMAIN_NAME) + ], + 'label' => $this->translator->trans('Delivery type', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PriceCreateForm.php b/local/modules/MondialRelay/Form/PriceCreateForm.php new file mode 100644 index 00000000..cd9cd2d8 --- /dev/null +++ b/local/modules/MondialRelay/Form/PriceCreateForm.php @@ -0,0 +1,42 @@ + + */ +class PriceCreateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_weight', + 'number', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Weight up to...', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'price', + 'number', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Price', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PricesUpdateForm.php b/local/modules/MondialRelay/Form/PricesUpdateForm.php new file mode 100644 index 00000000..f92ede49 --- /dev/null +++ b/local/modules/MondialRelay/Form/PricesUpdateForm.php @@ -0,0 +1,48 @@ + + */ +class PricesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_weight', + 'collection', + [ + "type" => "number", + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Weight up to...', [], MondialRelay::DOMAIN_NAME), + 'allow_add' => true, + 'allow_delete' => true, + ] + )->add( + 'price', + 'collection', + [ + "type" => "number", + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Price', [], MondialRelay::DOMAIN_NAME), + 'allow_add' => true, + 'allow_delete' => true, + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/SettingsForm.php b/local/modules/MondialRelay/Form/SettingsForm.php new file mode 100644 index 00000000..259aedca --- /dev/null +++ b/local/modules/MondialRelay/Form/SettingsForm.php @@ -0,0 +1,105 @@ + + */ +class SettingsForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + MondialRelay::CODE_ENSEIGNE, + 'text', + [ + "constraints" => [new NotBlank()], + 'label' => $this->translator->trans('Mondial Relay store code', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('This is the store code, as provided by Mondial Relay.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::PRIVATE_KEY, + 'text', + [ + "constraints" => [new NotBlank()], + 'label' => $this->translator->trans('Private key', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your private key, as provided by Mondial Relay.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_HOME_DELIVERY, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow home delivery', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow delivery at customer address in supported countries.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_RELAY_DELIVERY, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow relay delivery', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow delivery in relays in supported countries.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_INSURANCE, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow optional insurance', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow an optionnal insurance selection depending on cart value.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::WEBSERVICE_URL, + 'text', + [ + 'label' => $this->translator->trans('Mondial Relay Web service WSDL URL', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('This is the URL of the Mondial Relay web service WSDL.', [], MondialRelay::DOMAIN_NAME) + ] + ] + )->add( + MondialRelay::GOOGLE_MAPS_API_KEY, + 'text', + [ + 'label' => $this->translator->trans('Google Map API Key', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'This key is required to display relays map. Click here to get one.', + [ "%get_key_url" => "https://developers.google.com/maps/documentation/javascript/get-api-key" ], + MondialRelay::DOMAIN_NAME + ) + ] + ] + ); + ; + } +} diff --git a/local/modules/MondialRelay/Hook/AdminHookManager.php b/local/modules/MondialRelay/Hook/AdminHookManager.php new file mode 100644 index 00000000..788b9bcc --- /dev/null +++ b/local/modules/MondialRelay/Hook/AdminHookManager.php @@ -0,0 +1,57 @@ + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + 'private_key' => MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY), + 'allow_relay_delivery' => MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY), + 'allow_home_delivery' => MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY), + 'allow_insurance' => MondialRelay::getConfigValue(MondialRelay::ALLOW_INSURANCE), + + 'module_id' => MondialRelay::getModuleId() + ]; + + $event->add( + $this->render('mondialrelay/module-configuration.html', $vars) + ); + } + + public function onMainTopMenuTools(HookRenderBlockEvent $event) + { + $event->add( + [ + 'id' => 'tools_mondial_relay', + 'class' => '', + 'url' => URL::getInstance()->absoluteUrl('/admin/module/MondialRelay'), + 'title' => $this->trans('Mondial Relay', [], MondialRelay::DOMAIN_NAME) + ] + ); + } + + public function onModuleConfigureJs(HookRenderEvent $event) + { + $event + ->add($this->render("mondialrelay/assets/js/mondialrelay.js.html")) + ->add($this->addJS("mondialrelay/assets/js/bootstrap-notify.min.js")) + ; + } +} diff --git a/local/modules/MondialRelay/Hook/EmailHookManager.php b/local/modules/MondialRelay/Hook/EmailHookManager.php new file mode 100644 index 00000000..f9f3a169 --- /dev/null +++ b/local/modules/MondialRelay/Hook/EmailHookManager.php @@ -0,0 +1,65 @@ +add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + 'html_mode' => $htmlMode ? '1' : '0' + ] + ) + ); + } + + public function onDeliveryAddressText(HookRenderEvent $event) + { + $this->renderAddressTemplate($event, false); + } + + public function onDeliveryAddressHtml(HookRenderEvent $event) + { + $this->renderAddressTemplate($event, true); + } + + public function onAfterProductsText(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours-text.html', + [ + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } + + public function onAfterProductsHtml(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours-html.html', + [ + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } +} diff --git a/local/modules/MondialRelay/Hook/FrontHookManager.php b/local/modules/MondialRelay/Hook/FrontHookManager.php new file mode 100644 index 00000000..a034fbb1 --- /dev/null +++ b/local/modules/MondialRelay/Hook/FrontHookManager.php @@ -0,0 +1,53 @@ +getSession()->remove(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + $this->getSession()->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID); + + // Get the address id from the request, as the hook don(t give it to us. + $addressId = $this->getRequest()->get('address_id', 0); + + $event->add( + $this->render( + 'mondialrelay/order-delivery-extra.html', + [ + 'module_id' => MondialRelay::getModuleId(), + 'address_id' => $addressId + ] + ) + ); + } + + public function onAccountOrderDeliveryAddress(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'order_id' => $event->getArgument('order'), + 'module_id' => $event->getArgument('module') + ] + ) + ); + } +} + + diff --git a/local/modules/MondialRelay/Hook/PdfHookManager.php b/local/modules/MondialRelay/Hook/PdfHookManager.php new file mode 100644 index 00000000..6f368513 --- /dev/null +++ b/local/modules/MondialRelay/Hook/PdfHookManager.php @@ -0,0 +1,42 @@ +add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } + public function onAfterDeliveryModule(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } +} diff --git a/local/modules/MondialRelay/I18n/backOffice/default/en_US.php b/local/modules/MondialRelay/I18n/backOffice/default/en_US.php new file mode 100644 index 00000000..7b00e1b8 --- /dev/null +++ b/local/modules/MondialRelay/I18n/backOffice/default/en_US.php @@ -0,0 +1,30 @@ + 'Add a new insurance', + 'Add a new price' => 'Add a new price', + 'Add new insurance' => 'Add new insurance', + 'Add this price' => 'Add this price', + 'Area properties' => 'Area properties', + 'Cart value' => 'Cart value', + 'Cart weight up to...' => 'Cart weight up to...', + 'Configuration' => 'Configuration', + 'Delete this insurance' => 'Delete this insurance', + 'Delete this price' => 'Delete this price', + 'Delivery prices' => 'Delivery prices', + 'Development of this module is sponsored by you\'Nivers web and communication agency in Roanne.' => 'Development of this module is sponsored by you\'Nivers, web and communication agency in Roanne.', + 'Insurance price with tax' => 'Insurance price with tax', + 'Insurances' => 'Insurances', + 'Mondial Relay delivery configuration' => 'Mondial Relay delivery configuration', + 'Price with tax' => 'Price with tax', + 'Prices' => 'Prices', + 'Save' => 'Save', + 'Save changes' => 'Save changes', + 'Saving data, please wait...' => 'Saving data, please wait...', + 'Shipping zone "%name"' => 'Shipping zone "%name"', + 'Sorry, something goes wrong. Please try again.' => 'Sorry, something goes wrong. Please try again.', + 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' => 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.', + 'Update finished.' => 'Update finished.', + 'days' => 'days', + 'kg' => 'kg', +); diff --git a/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php b/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php new file mode 100644 index 00000000..c3d6f922 --- /dev/null +++ b/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php @@ -0,0 +1,30 @@ + 'Ajouter une assurance', + 'Add a new price' => 'Ajouter un prix', + 'Add new insurance' => 'Ajouter une assurance', + 'Add this price' => 'Ajouter ce prix', + 'Area properties' => 'Propriétés de la zone', + 'Cart value' => 'Montant du panier', + 'Cart weight up to...' => 'Jusqu\'au poids...', + 'Configuration' => 'Configuration', + 'Delete this insurance' => 'Supprimer cette assurance', + 'Delete this price' => 'Supprimer ce prix', + 'Delivery prices' => 'Prix de livraison', + 'Development of this module is sponsored by you\'Nivers web and communication agency in Roanne.' => 'Le développement de ce module est financé par you\'Nivers, créateurs de site Internet à Roanne.', + 'Insurance price with tax' => 'Prix de l\'assurance TTC', + 'Insurances' => 'Assurances', + 'Mondial Relay delivery configuration' => 'Configuration des livraisons avec Mondial Relay', + 'Price with tax' => 'Prix TTC', + 'Prices' => 'Prix', + 'Save' => 'Enregistrer', + 'Save changes' => 'Enregistrer', + 'Saving data, please wait...' => 'Enregistrement en cours, merci de patienter...', + 'Shipping zone "%name"' => 'Zone de livraison "%name"', + 'Sorry, something goes wrong. Please try again.' => 'Quelque chose s\'est mal passé, merdi de ré-essayer.', + 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' => 'Il n\'y a pas de zone de livraison attaché à Mondial Relay. Cliquez ici pour configurer les zones de livraison du module', + 'Update finished.' => 'Enregistrement terminé.', + 'days' => 'jours', + 'kg' => 'kg', +); diff --git a/local/modules/MondialRelay/I18n/email/default/en_US.php b/local/modules/MondialRelay/I18n/email/default/en_US.php new file mode 100644 index 00000000..21a492c1 --- /dev/null +++ b/local/modules/MondialRelay/I18n/email/default/en_US.php @@ -0,0 +1,15 @@ + 'Dear %first %last', + 'Details about this order are available in your customer account.' => 'Details about this order are available in your customer account.', + 'Details about this order are available in your customer account: %account_url.' => 'Details about this order are available in your customer account: %account_url.', + 'Mondial Relay pickup location #%num' => 'Mondial Relay pickup location #%num', + 'Pickup relay opening hours:' => 'Pickup relay opening hours:', + 'See you soon at %store at the following address: %url' => 'See you soon at %store at the following address: %url', + 'See you soon at %store' => 'See you soon at %store', + 'The %store team.' => 'The %store team.', + 'Your %ref order has been shipped' => 'Your %ref order has been shipped', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.' => 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis' => 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis', +); diff --git a/local/modules/MondialRelay/I18n/email/default/fr_FR.php b/local/modules/MondialRelay/I18n/email/default/fr_FR.php new file mode 100644 index 00000000..c3955ff7 --- /dev/null +++ b/local/modules/MondialRelay/I18n/email/default/fr_FR.php @@ -0,0 +1,15 @@ + 'Bonjour %first %last', + 'Details about this order are available in your customer account.' => 'Les détails de cette commande sont disponibles dans votre compte client.', + 'Details about this order are available in your customer account: %account_url.' => 'Les détails de cette commande sont disponibles dans votre compte client: %account_url.', + 'Mondial Relay pickup location #%num' => 'Point relais Mondial Relay No. %num', + 'Pickup relay opening hours:' => 'Horaires d\'ouverture du relais', + 'See you soon at %store at the following address: %url' => 'A bientôt sur %store en suivant ce lien: %url', + 'See you soon at %store' => 'A bientôt sur %store', + 'The %store team.' => 'L\'équipe %store.', + 'Your %ref order has been shipped' => 'Votre commande %ref a été expédiée.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.' => 'Votre commande %order_ref vient de quitter nos entrepôts. Le numéro de suivi est %tracking_ref. Merci de cliquer ici pour obtenir les informations de suivi.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis' => 'Votre commande %order_ref vient de quitter nos entrepôts. Le numéro de suivi est %tracking_ref. Pour obtenir des informations sur l\'avancement de votre commande, merci de suivre ce lien: https://www.mondialrelay.fr/suivi-de-colis', +); diff --git a/local/modules/MondialRelay/I18n/en_US.php b/local/modules/MondialRelay/I18n/en_US.php new file mode 100644 index 00000000..074bad18 --- /dev/null +++ b/local/modules/MondialRelay/I18n/en_US.php @@ -0,0 +1,38 @@ + 'Allow home delivery', + 'Allow optional insurance' => 'Allow optional insurance', + 'Allow relay delivery' => 'Allow relay delivery', + 'Cart value' => 'Cart value', + 'Check this box to allow an optionnal insurance selection depending on cart value.' => 'Check this box to allow an optionnal insurance selection depending on cart value.', + 'Check this box to allow delivery at customer address in supported countries.' => 'Check this box to allow delivery at customer address in supported countries.', + 'Check this box to allow delivery in relays in supported countries.' => 'Check this box to allow delivery in relays in supported countries.', + 'Delivery delay' => 'Delivery delay', + 'Delivery type' => 'Delivery type', + 'Friday' => 'Friday', + 'Google Map API Key' => 'Google Map API Key', + 'Home and relay delivery' => 'Home and relay delivery', + 'Home delivery' => 'Home delivery', + 'Insurance price' => 'Insurance price', + 'Monday' => 'Monday', + 'Mondial Relay' => 'Mondial Relay', + 'Mondial Relay Web service WSDL URL' => 'Mondial Relay Web service WSDL URL', + 'Mondial Relay store code' => 'Mondial Relay store code', + 'Mondial Relay tracking information' => 'Mondial Relay tracking information', + 'Pickup relay #%number' => 'Pickup relay #%number', + 'Price' => 'Price', + 'Private key' => 'Private key', + 'Relay delivery' => 'Relay delivery', + 'Saturday' => 'Saturday', + 'Sunday' => 'Sunday', + 'This is the URL of the Mondial Relay web service WSDL.' => 'This is the URL of the Mondial Relay web service WSDL.', + 'This is the store code, as provided by Mondial Relay.' => 'This is the store code, as provided by Mondial Relay.', + 'This key is required to display relays map. Click here to get one.' => 'This key is required to display relays map. Click here to get one.', + 'Thursday' => 'Thursday', + 'Tuesday' => 'Tuesday', + 'Wednesday' => 'Wednesday', + 'Weight up to...' => 'Weight up to...', + 'Your order has been shipped' => 'Your order has been shipped', + 'Your private key, as provided by Mondial Relay.' => 'Your private key, as provided by Mondial Relay.', +); diff --git a/local/modules/MondialRelay/I18n/fr_FR.php b/local/modules/MondialRelay/I18n/fr_FR.php new file mode 100644 index 00000000..15b66128 --- /dev/null +++ b/local/modules/MondialRelay/I18n/fr_FR.php @@ -0,0 +1,38 @@ + 'Autoriser la livraison à domicile', + 'Allow optional insurance' => 'Proposer une assurance optionnelle', + 'Allow relay delivery' => 'Autoriser la livraison en point relais', + 'Cart value' => 'Valeur du panier', + 'Check this box to allow an optionnal insurance selection depending on cart value.' => 'Cochez cette case pour proposer à vos client une assurance optionnelle, fonction du montant du panier', + 'Check this box to allow delivery at customer address in supported countries.' => 'Cochez cette case pour autoriser les livraison à domicile dans les pays ou Mondial Relay le propose', + 'Check this box to allow delivery in relays in supported countries.' => 'Cochez cette case pour autoriser les livraison en pojt relais dans les pays ou Mondial Relay le propose', + 'Delivery delay' => 'Délai de livraison', + 'Delivery type' => 'Type de livraison', + 'Friday' => 'Vendredi', + 'Google Map API Key' => 'Clef d\'API Google Maps', + 'Home and relay delivery' => 'Livraison en point relais ou à domicile', + 'Home delivery' => 'Livraison à mon domicile', + 'Insurance price' => 'Montant de l\'assurance', + 'Monday' => 'Lundi', + 'Mondial Relay' => 'Mondial Relay', + 'Mondial Relay Web service WSDL URL' => 'URL du WSDL du web service Mondial Relay', + 'Mondial Relay store code' => 'Code magasin Mondial Relay', + 'Mondial Relay tracking information' => 'Informations de suivi Mondial Relay', + 'Pickup relay #%number' => 'Point relais No. %number', + 'Price' => 'Prix', + 'Private key' => 'Clef privée', + 'Relay delivery' => 'Livraison en point relais', + 'Saturday' => 'Samedi', + 'Sunday' => 'Dimanche', + 'This is the URL of the Mondial Relay web service WSDL.' => 'Il s\'agit de l\'URL du descripteur du web service Mondial Relay, qui sera appelée par le module', + 'This is the store code, as provided by Mondial Relay.' => 'Il s\'agit du code magasin fourni par Mondial Relay', + 'This key is required to display relays map. Click here to get one.' => 'Cette clef est indispensable pour afficher la carte des points relais. Cliquez ici pour en obtenir une.', + 'Thursday' => 'Jeudi', + 'Tuesday' => 'Mardi', + 'Wednesday' => 'Mercredi', + 'Weight up to...' => 'Jusqu\'au poids...', + 'Your order has been shipped' => 'Votre commande a été expédiée', + 'Your private key, as provided by Mondial Relay.' => 'Votre clef privée, fournie par Mondial Relay', +); diff --git a/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php b/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php new file mode 100644 index 00000000..2e19908b --- /dev/null +++ b/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php @@ -0,0 +1,23 @@ + 'City', + 'Current address can\'t be geolocated' => 'Current address can\'t be geolocated', + 'Expected delivery date: %delivery_date' => 'Expected delivery date: %delivery_date', + 'Find' => 'Find', + 'Find a pickup location around you' => 'Find a pickup location around you', + 'Loading...' => 'Loading...', + 'Mondial Relay home delivery' => 'Mondial Relay home delivery', + 'Mondial Relay pickup location' => 'Mondial Relay pickup location', + 'Mondial Relay pickup location #%num' => 'Mondial Relay pickup #%num', + 'No pickup locations were found for this address.' => 'No pickup locations were found for this address.', + 'Oops, something goes wrong, please try again.' => 'Oops, something goes wrong, please try again.', + 'Pickup location #%number' => 'Pickup location #%number', + 'Pickup location address' => 'Pickup location address', + 'Pickup location opening hours' => 'Pickup location opening hours', + 'Please select a pickup location.' => 'Please select a pickup location.', + 'Search radius' => 'Search radius', + 'Sorry, we failed to get pickup locations. Error is : __ERR__.' => 'Sorry, we failed to get pickup locations. Error is : __ERR__.', + 'Zip code' => 'Zip code', + 'km' => 'km', +); diff --git a/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php b/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php new file mode 100644 index 00000000..bea0ef5b --- /dev/null +++ b/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php @@ -0,0 +1,23 @@ + 'Ville', + 'Current address can\'t be geolocated' => 'L\'adresse sélectionné ne peut être géolocalisée, merci de vérifier qu\'elle est correcte.', + 'Expected delivery date: %delivery_date' => 'Date de livraison estimée: %delivery_date', + 'Find' => 'Go', + 'Find a pickup location around you' => 'Trouver un point relais autour de vous', + 'Loading...' => 'Chargement...', + 'Mondial Relay home delivery' => 'Livraison Mondial Relay à mon domicile', + 'Mondial Relay pickup location' => 'Adresse du point relais Mondial Relay', + 'Mondial Relay pickup location #%num' => 'Point relais Mondial Relay No. %num', + 'No pickup locations were found for this address.' => 'Nous n\'avons pas trouvé de point relais autour de cette adresse.', + 'Oops, something goes wrong, please try again.' => 'Oups, quelque chose n\'a pas fonctionné correctement. Merci de recommencer.', + 'Pickup location #%number' => 'Point relais No. %number', + 'Pickup location address' => 'Adresse du point relais', + 'Pickup location opening hours' => 'Horaires d\'ouverture du relais', + 'Please select a pickup location.' => 'Merci de choisir un point relais.', + 'Search radius' => 'Rayon de recherche', + 'Sorry, we failed to get pickup locations. Error is : __ERR__.' => 'Impossible d\'obtenir les points relais. L\'erreur est : __ERR__.', + 'Zip code' => 'Code postal', + 'km' => 'km', +); diff --git a/local/modules/MondialRelay/I18n/pdf/default/en_US.php b/local/modules/MondialRelay/I18n/pdf/default/en_US.php new file mode 100644 index 00000000..9285719e --- /dev/null +++ b/local/modules/MondialRelay/I18n/pdf/default/en_US.php @@ -0,0 +1,6 @@ + 'Mondial Relay pickup location #%num', + 'Pickup relay opening hours:' => 'Pickup relay opening hours:', +); diff --git a/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php b/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php new file mode 100644 index 00000000..9f8033cd --- /dev/null +++ b/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php @@ -0,0 +1,6 @@ + 'Point relais Mondial Relay No. %num', + 'Pickup relay opening hours:' => 'Horaires d\'ouverture du relais', +); diff --git a/local/modules/MondialRelay/LICENSE b/local/modules/MondialRelay/LICENSE new file mode 100644 index 00000000..65c5ca88 --- /dev/null +++ b/local/modules/MondialRelay/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + 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 that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU 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 as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/local/modules/MondialRelay/Loop/AreaAttributes.php b/local/modules/MondialRelay/Loop/AreaAttributes.php new file mode 100644 index 00000000..01a597b7 --- /dev/null +++ b/local/modules/MondialRelay/Loop/AreaAttributes.php @@ -0,0 +1,76 @@ +getAreaId()) { + $query->filterByAreaId($areaId, Criteria::IN); + } + + if (null !== $delivTypes = $this->getDeliveryType()) { + $query->filterByDeliveryType($delivTypes, Criteria::IN); + } + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayZoneConfiguration $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('DELIVERY_TYPE', $item->getDeliveryType()) + ->set('DELIVERY_TIME', $item->getDeliveryTime()) + ->set('AREA_ID', $item->getAreaId()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/DeliveryPrice.php b/local/modules/MondialRelay/Loop/DeliveryPrice.php new file mode 100644 index 00000000..72b28e47 --- /dev/null +++ b/local/modules/MondialRelay/Loop/DeliveryPrice.php @@ -0,0 +1,209 @@ +findPk($this->getCountryId())) { + if (null !== $stateId = $this->getStateId()) { + $state = StateQuery::create()->findPk($this->$stateId()); + } else { + $state = null; + } + + $mode = $this->getMode(); + + switch ($mode) { + case 'home': + $deliveryType = MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE; + + if (! MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY, true)) { + return []; + } + break; + + case 'relay': + $deliveryType = MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE; + + if (! MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY, true)) { + return []; + } + break; + + case 'all': + $deliveryType = MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE; + break; + } + + + // Find all areas which contains this country + $countryInAreaList = CountryAreaQuery::findByCountryAndState($country, $state); + + $areaIdList = []; + + $module = ModuleQuery::create()->findOneByCode(MondialRelay::getModuleCode()); + + /** @var CountryArea $countryInArea */ + foreach ($countryInAreaList as $countryInArea) { + // Check if module is attached to the area + if (AreaDeliveryModuleQuery::create() + ->filterByAreaId($countryInArea->getAreaId()) + ->filterByModule($module) + ->count() > 0) { + $areaIdList[] = $countryInArea->getAreaId(); + } + } + + // Find zones with the required delivery type + $zones = MondialRelayZoneConfigurationQuery::create() + ->filterByAreaId($areaIdList, Criteria::IN) + ->filterByDeliveryType($deliveryType) + ->find(); + + /** @var Cart $cart */ + $cart = $this->requestStack + ->getCurrentRequest() + ->getSession() + ->getSessionCart($this->dispatcher) + ; + + $cartWeight = $cart->getWeight(); + $cartValue = $cart->getTaxedAmount($country); + + /** @var MondialRelayZoneConfiguration $zone */ + foreach ($zones as $zone) { + $result = []; + + if (null !== $deliveryPrice = MondialRelayDeliveryPriceQuery::create() + ->filterByAreaId($zone->getAreaId()) + ->filterByMaxWeight($cartWeight, Criteria::GREATER_EQUAL) + ->orderByMaxWeight(Criteria::ASC) + ->findOne()) { + $deliveryDate = (new \DateTime())->add(new \DateInterval("P" . $zone->getDeliveryTime() . "D")); + + // We have a price + $result['PRICE'] = $deliveryPrice->getPriceWithTax(); + $result['MAX_WEIGHT'] = $deliveryPrice->getMaxWeight(); + $result['AREA_ID'] = $deliveryPrice->getAreaId(); + $result['DELIVERY_DELAY'] = $zone->getDeliveryTime(); + $result['DELIVERY_DATE'] = $deliveryDate; + switch ($zone->getDeliveryType()) { + case MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE: + $result['ZONE_TYPE'] = 'home'; + break; + + case MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE: + $result['ZONE_TYPE'] = 'relay'; + break; + + default: + $result['ZONE_TYPE'] = '?'; + } + + $result['TYPE'] = $zone->getDeliveryType(); + + // Get insurance cost + if (null !== $insurance = MondialRelayDeliveryInsuranceQuery::create() + ->filterByMaxValue($cartValue, Criteria::GREATER_EQUAL) + ->orderByMaxValue(Criteria::ASC) + ->findOne() + ) { + $result['INSURANCE_AVAILABLE'] = true; + $result['INSURANCE_PRICE'] = $insurance->getPriceWithTax(); + $result['INSURANCE_REF_VALUE'] = $insurance->getMaxValue(); + } else { + $result['INSURANCE_AVAILABLE'] = false; + } + + $results[] = $result; + } + } + } + + return $results; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryPrice $item */ + foreach ($loopResult->getResultDataCollection() as $resultItem) { + $loopResultRow = new LoopResultRow($item); + + foreach ($resultItem as $name => $value) { + $loopResultRow->set($name, $value); + } + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/Insurances.php b/local/modules/MondialRelay/Loop/Insurances.php new file mode 100644 index 00000000..49eafcc8 --- /dev/null +++ b/local/modules/MondialRelay/Loop/Insurances.php @@ -0,0 +1,64 @@ +orderByMaxValue(); + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryInsurance $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('MAX_VALUE', $item->getMaxValue()) + ->set('PRICE', $item->getPriceWithTax()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/PickupPoints.php b/local/modules/MondialRelay/Loop/PickupPoints.php new file mode 100644 index 00000000..0940d0fa --- /dev/null +++ b/local/modules/MondialRelay/Loop/PickupPoints.php @@ -0,0 +1,90 @@ +getCountryId(), + $this->getCity(), + $this->getZipcode(), + $this->getSearchRadius() + ); + + $this->dispatcher->dispatch(MondialRelayEvents::FIND_RELAYS, $event); + + return $event->getPoints(); + } + + public function parseResults(LoopResult $loopResult) + { + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set("ID", $item['id']) + ->set("LATITUDE", $item['latitude']) + ->set("LONGITUDE", $item['longitude']) + ->set("ZIPCODE", $item['zipcode']) + ->set("CITY", $item['city']) + ->set("COUNTRY", $item['country']) + ->set("NAME", $item['name']) + ->set("ADDRESS", $item['address']) + ->set("DISTANCE", $item['distance']) + ->set("OPENINGS", $item['openings']) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/Prices.php b/local/modules/MondialRelay/Loop/Prices.php new file mode 100644 index 00000000..c954a023 --- /dev/null +++ b/local/modules/MondialRelay/Loop/Prices.php @@ -0,0 +1,72 @@ +getAreaId()) { + $query->filterByAreaId($areaId, Criteria::IN); + } + + $query->orderByMaxWeight(); + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryPrice $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('MAX_WEIGHT', $item->getMaxWeight()) + ->set('PRICE', $item->getPriceWithTax()) + ->set('AREA_ID', $item->getAreaId()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/SelectedPickupPoint.php b/local/modules/MondialRelay/Loop/SelectedPickupPoint.php new file mode 100644 index 00000000..869089c1 --- /dev/null +++ b/local/modules/MondialRelay/Loop/SelectedPickupPoint.php @@ -0,0 +1,89 @@ +getCurrentRequest()->getSession()->get(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + return MondialRelayPickupAddressQuery::create()->filterById($relayId); + } elseif (null !== $orderAddressId = $this->getOrderAddressId()) { + return MondialRelayPickupAddressQuery::create()->filterByOrderAddressId($orderAddressId); + } elseif (null !== $orderId = $this->getOrderId()) { + if (null !== $order = OrderQuery::create()->findPk($orderId)) { + return MondialRelayPickupAddressQuery::create() + ->filterByOrderAddressId($order->getDeliveryOrderAddressId()); + } + } + + return null; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayPickupAddress $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $relayData = json_decode($item->getJsonRelayData(), true); + + $loopResultRow + ->set("ID", $relayData['id']) + ->set("LATITUDE", $relayData['latitude']) + ->set("LONGITUDE", $relayData['longitude']) + ->set("ZIPCODE", $relayData['zipcode']) + ->set("CITY", $relayData['city']) + ->set("COUNTRY", $relayData['country']) + ->set("NAME", $relayData['name']) + ->set("ADDRESS", $relayData['address']) + ->set("DISTANCE", $relayData['distance']) + ->set("OPENINGS", $relayData['openings']) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php new file mode 100644 index 00000000..18f4707d --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php @@ -0,0 +1,1251 @@ +max_value = '0.000000'; + $this->price_with_tax = '0.000000'; + } + + /** + * Initializes internal state of MondialRelay\Model\Base\MondialRelayDeliveryInsurance object. + * @see applyDefaults() + */ + public function __construct() + { + $this->applyDefaultValues(); + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !!$this->modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayDeliveryInsurance instance. If + * obj is an instance of MondialRelayDeliveryInsurance, delegates to + * equals(MondialRelayDeliveryInsurance). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayDeliveryInsurance The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayDeliveryInsurance The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [level] column value. + * + * @return int + */ + public function getLevel() + { + + return $this->level; + } + + /** + * Get the [max_value] column value. + * + * @return string + */ + public function getMaxValue() + { + + return $this->max_value; + } + + /** + * Get the [price_with_tax] column value. + * + * @return string + */ + public function getPriceWithTax() + { + + return $this->price_with_tax; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [level] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setLevel($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->level !== $v) { + $this->level = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::LEVEL] = true; + } + + + return $this; + } // setLevel() + + /** + * Set the value of [max_value] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setMaxValue($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->max_value !== $v) { + $this->max_value = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::MAX_VALUE] = true; + } + + + return $this; + } // setMaxValue() + + /** + * Set the value of [price_with_tax] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setPriceWithTax($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->price_with_tax !== $v) { + $this->price_with_tax = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX] = true; + } + + + return $this; + } // setPriceWithTax() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + if ($this->max_value !== '0.000000') { + return false; + } + + if ($this->price_with_tax !== '0.000000') { + return false; + } + + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('Level', TableMap::TYPE_PHPNAME, $indexType)]; + $this->level = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('MaxValue', TableMap::TYPE_PHPNAME, $indexType)]; + $this->max_value = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('PriceWithTax', TableMap::TYPE_PHPNAME, $indexType)]; + $this->price_with_tax = (null !== $col) ? (string) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayDeliveryInsuranceTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayDeliveryInsurance object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayDeliveryInsuranceQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayDeliveryInsurance::setDeleted() + * @see MondialRelayDeliveryInsurance::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayDeliveryInsuranceQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayDeliveryInsuranceTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::LEVEL)) { + $modifiedColumns[':p' . $index++] = 'LEVEL'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE)) { + $modifiedColumns[':p' . $index++] = 'MAX_VALUE'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX)) { + $modifiedColumns[':p' . $index++] = 'PRICE_WITH_TAX'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_delivery_insurance (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'LEVEL': + $stmt->bindValue($identifier, $this->level, PDO::PARAM_INT); + break; + case 'MAX_VALUE': + $stmt->bindValue($identifier, $this->max_value, PDO::PARAM_STR); + break; + case 'PRICE_WITH_TAX': + $stmt->bindValue($identifier, $this->price_with_tax, PDO::PARAM_STR); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryInsuranceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getLevel(); + break; + case 2: + return $this->getMaxValue(); + break; + case 3: + return $this->getPriceWithTax(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array()) + { + if (isset($alreadyDumpedObjects['MondialRelayDeliveryInsurance'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayDeliveryInsurance'][$this->getPrimaryKey()] = true; + $keys = MondialRelayDeliveryInsuranceTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getLevel(), + $keys[2] => $this->getMaxValue(), + $keys[3] => $this->getPriceWithTax(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryInsuranceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setLevel($value); + break; + case 2: + $this->setMaxValue($value); + break; + case 3: + $this->setPriceWithTax($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayDeliveryInsuranceTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setLevel($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setMaxValue($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setPriceWithTax($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::ID)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::LEVEL)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::LEVEL, $this->level); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $this->max_value); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $this->price_with_tax); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayDeliveryInsurance (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setLevel($this->getLevel()); + $copyObj->setMaxValue($this->getMaxValue()); + $copyObj->setPriceWithTax($this->getPriceWithTax()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->level = null; + $this->max_value = null; + $this->price_with_tax = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->applyDefaultValues(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayDeliveryInsuranceTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php new file mode 100644 index 00000000..192f7d36 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php @@ -0,0 +1,479 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayDeliveryInsurance|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryInsurance A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, LEVEL, MAX_VALUE, PRICE_WITH_TAX FROM mondial_relay_delivery_insurance WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayDeliveryInsurance(); + $obj->hydrate($row); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryInsurance|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the level column + * + * Example usage: + * + * $query->filterByLevel(1234); // WHERE level = 1234 + * $query->filterByLevel(array(12, 34)); // WHERE level IN (12, 34) + * $query->filterByLevel(array('min' => 12)); // WHERE level > 12 + * + * + * @param mixed $level The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByLevel($level = null, $comparison = null) + { + if (is_array($level)) { + $useMinMax = false; + if (isset($level['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($level['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level, $comparison); + } + + /** + * Filter the query on the max_value column + * + * Example usage: + * + * $query->filterByMaxValue(1234); // WHERE max_value = 1234 + * $query->filterByMaxValue(array(12, 34)); // WHERE max_value IN (12, 34) + * $query->filterByMaxValue(array('min' => 12)); // WHERE max_value > 12 + * + * + * @param mixed $maxValue The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByMaxValue($maxValue = null, $comparison = null) + { + if (is_array($maxValue)) { + $useMinMax = false; + if (isset($maxValue['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($maxValue['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue, $comparison); + } + + /** + * Filter the query on the price_with_tax column + * + * Example usage: + * + * $query->filterByPriceWithTax(1234); // WHERE price_with_tax = 1234 + * $query->filterByPriceWithTax(array(12, 34)); // WHERE price_with_tax IN (12, 34) + * $query->filterByPriceWithTax(array('min' => 12)); // WHERE price_with_tax > 12 + * + * + * @param mixed $priceWithTax The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPriceWithTax($priceWithTax = null, $comparison = null) + { + if (is_array($priceWithTax)) { + $useMinMax = false; + if (isset($priceWithTax['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($priceWithTax['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax, $comparison); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayDeliveryInsurance $mondialRelayDeliveryInsurance Object to remove from the list of results + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function prune($mondialRelayDeliveryInsurance = null) + { + if ($mondialRelayDeliveryInsurance) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $mondialRelayDeliveryInsurance->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_delivery_insurance table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayDeliveryInsuranceTableMap::clearInstancePool(); + MondialRelayDeliveryInsuranceTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayDeliveryInsurance or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayDeliveryInsurance object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayDeliveryInsuranceTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayDeliveryInsuranceTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayDeliveryInsuranceQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php new file mode 100644 index 00000000..3065dc16 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php @@ -0,0 +1,1336 @@ +max_weight = '0.000000'; + $this->price_with_tax = '0.000000'; + } + + /** + * Initializes internal state of MondialRelay\Model\Base\MondialRelayDeliveryPrice object. + * @see applyDefaults() + */ + public function __construct() + { + $this->applyDefaultValues(); + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !!$this->modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayDeliveryPrice instance. If + * obj is an instance of MondialRelayDeliveryPrice, delegates to + * equals(MondialRelayDeliveryPrice). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayDeliveryPrice The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayDeliveryPrice The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [max_weight] column value. + * + * @return string + */ + public function getMaxWeight() + { + + return $this->max_weight; + } + + /** + * Get the [price_with_tax] column value. + * + * @return string + */ + public function getPriceWithTax() + { + + return $this->price_with_tax; + } + + /** + * Get the [area_id] column value. + * + * @return int + */ + public function getAreaId() + { + + return $this->area_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [max_weight] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setMaxWeight($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->max_weight !== $v) { + $this->max_weight = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::MAX_WEIGHT] = true; + } + + + return $this; + } // setMaxWeight() + + /** + * Set the value of [price_with_tax] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setPriceWithTax($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->price_with_tax !== $v) { + $this->price_with_tax = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX] = true; + } + + + return $this; + } // setPriceWithTax() + + /** + * Set the value of [area_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setAreaId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->area_id !== $v) { + $this->area_id = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::AREA_ID] = true; + } + + if ($this->aArea !== null && $this->aArea->getId() !== $v) { + $this->aArea = null; + } + + + return $this; + } // setAreaId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + if ($this->max_weight !== '0.000000') { + return false; + } + + if ($this->price_with_tax !== '0.000000') { + return false; + } + + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('MaxWeight', TableMap::TYPE_PHPNAME, $indexType)]; + $this->max_weight = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('PriceWithTax', TableMap::TYPE_PHPNAME, $indexType)]; + $this->price_with_tax = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('AreaId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->area_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayDeliveryPriceTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayDeliveryPrice object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + if ($this->aArea !== null && $this->area_id !== $this->aArea->getId()) { + $this->aArea = null; + } + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayDeliveryPriceQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + $this->aArea = null; + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayDeliveryPrice::setDeleted() + * @see MondialRelayDeliveryPrice::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayDeliveryPriceQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + // We call the save method on the following object(s) if they + // were passed to this object by their corresponding set + // method. This object relates to these object(s) by a + // foreign key reference. + + if ($this->aArea !== null) { + if ($this->aArea->isModified() || $this->aArea->isNew()) { + $affectedRows += $this->aArea->save($con); + } + $this->setArea($this->aArea); + } + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayDeliveryPriceTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT)) { + $modifiedColumns[':p' . $index++] = 'MAX_WEIGHT'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX)) { + $modifiedColumns[':p' . $index++] = 'PRICE_WITH_TAX'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::AREA_ID)) { + $modifiedColumns[':p' . $index++] = 'AREA_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_delivery_price (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'MAX_WEIGHT': + $stmt->bindValue($identifier, $this->max_weight, PDO::PARAM_STR); + break; + case 'PRICE_WITH_TAX': + $stmt->bindValue($identifier, $this->price_with_tax, PDO::PARAM_STR); + break; + case 'AREA_ID': + $stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryPriceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getMaxWeight(); + break; + case 2: + return $this->getPriceWithTax(); + break; + case 3: + return $this->getAreaId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE. + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) + { + if (isset($alreadyDumpedObjects['MondialRelayDeliveryPrice'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayDeliveryPrice'][$this->getPrimaryKey()] = true; + $keys = MondialRelayDeliveryPriceTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getMaxWeight(), + $keys[2] => $this->getPriceWithTax(), + $keys[3] => $this->getAreaId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + if ($includeForeignObjects) { + if (null !== $this->aArea) { + $result['Area'] = $this->aArea->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true); + } + } + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryPriceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setMaxWeight($value); + break; + case 2: + $this->setPriceWithTax($value); + break; + case 3: + $this->setAreaId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayDeliveryPriceTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setMaxWeight($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setPriceWithTax($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setAreaId($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::ID)) $criteria->add(MondialRelayDeliveryPriceTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT)) $criteria->add(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $this->max_weight); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX)) $criteria->add(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $this->price_with_tax); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::AREA_ID)) $criteria->add(MondialRelayDeliveryPriceTableMap::AREA_ID, $this->area_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryPriceTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayDeliveryPrice (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setMaxWeight($this->getMaxWeight()); + $copyObj->setPriceWithTax($this->getPriceWithTax()); + $copyObj->setAreaId($this->getAreaId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayDeliveryPrice Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Declares an association between this object and a ChildArea object. + * + * @param ChildArea $v + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + * @throws PropelException + */ + public function setArea(ChildArea $v = null) + { + if ($v === null) { + $this->setAreaId(NULL); + } else { + $this->setAreaId($v->getId()); + } + + $this->aArea = $v; + + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the ChildArea object, it will not be re-added. + if ($v !== null) { + $v->addMondialRelayDeliveryPrice($this); + } + + + return $this; + } + + + /** + * Get the associated ChildArea object + * + * @param ConnectionInterface $con Optional Connection object. + * @return ChildArea The associated ChildArea object. + * @throws PropelException + */ + public function getArea(ConnectionInterface $con = null) + { + if ($this->aArea === null && ($this->area_id !== null)) { + $this->aArea = AreaQuery::create()->findPk($this->area_id, $con); + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + $this->aArea->addMondialRelayDeliveryPrices($this); + */ + } + + return $this->aArea; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->max_weight = null; + $this->price_with_tax = null; + $this->area_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->applyDefaultValues(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + $this->aArea = null; + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayDeliveryPriceTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php new file mode 100644 index 00000000..48b6c3dc --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php @@ -0,0 +1,564 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayDeliveryPrice|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryPrice A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, MAX_WEIGHT, PRICE_WITH_TAX, AREA_ID FROM mondial_relay_delivery_price WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayDeliveryPrice(); + $obj->hydrate($row); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryPrice|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the max_weight column + * + * Example usage: + * + * $query->filterByMaxWeight(1234); // WHERE max_weight = 1234 + * $query->filterByMaxWeight(array(12, 34)); // WHERE max_weight IN (12, 34) + * $query->filterByMaxWeight(array('min' => 12)); // WHERE max_weight > 12 + * + * + * @param mixed $maxWeight The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByMaxWeight($maxWeight = null, $comparison = null) + { + if (is_array($maxWeight)) { + $useMinMax = false; + if (isset($maxWeight['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($maxWeight['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight, $comparison); + } + + /** + * Filter the query on the price_with_tax column + * + * Example usage: + * + * $query->filterByPriceWithTax(1234); // WHERE price_with_tax = 1234 + * $query->filterByPriceWithTax(array(12, 34)); // WHERE price_with_tax IN (12, 34) + * $query->filterByPriceWithTax(array('min' => 12)); // WHERE price_with_tax > 12 + * + * + * @param mixed $priceWithTax The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPriceWithTax($priceWithTax = null, $comparison = null) + { + if (is_array($priceWithTax)) { + $useMinMax = false; + if (isset($priceWithTax['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($priceWithTax['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax, $comparison); + } + + /** + * Filter the query on the area_id column + * + * Example usage: + * + * $query->filterByAreaId(1234); // WHERE area_id = 1234 + * $query->filterByAreaId(array(12, 34)); // WHERE area_id IN (12, 34) + * $query->filterByAreaId(array('min' => 12)); // WHERE area_id > 12 + * + * + * @see filterByArea() + * + * @param mixed $areaId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByAreaId($areaId = null, $comparison = null) + { + if (is_array($areaId)) { + $useMinMax = false; + if (isset($areaId['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($areaId['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId, $comparison); + } + + /** + * Filter the query by a related \Thelia\Model\Area object + * + * @param \Thelia\Model\Area|ObjectCollection $area The related object(s) to use as filter + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByArea($area, $comparison = null) + { + if ($area instanceof \Thelia\Model\Area) { + return $this + ->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $area->getId(), $comparison); + } elseif ($area instanceof ObjectCollection) { + if (null === $comparison) { + $comparison = Criteria::IN; + } + + return $this + ->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $area->toKeyValue('PrimaryKey', 'Id'), $comparison); + } else { + throw new PropelException('filterByArea() only accepts arguments of type \Thelia\Model\Area or Collection'); + } + } + + /** + * Adds a JOIN clause to the query using the Area relation + * + * @param string $relationAlias optional alias for the relation + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function joinArea($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + $tableMap = $this->getTableMap(); + $relationMap = $tableMap->getRelation('Area'); + + // create a ModelJoin object for this join + $join = new ModelJoin(); + $join->setJoinType($joinType); + $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias); + if ($previousJoin = $this->getPreviousJoin()) { + $join->setPreviousJoin($previousJoin); + } + + // add the ModelJoin to the current object + if ($relationAlias) { + $this->addAlias($relationAlias, $relationMap->getRightTable()->getName()); + $this->addJoinObject($join, $relationAlias); + } else { + $this->addJoinObject($join, 'Area'); + } + + return $this; + } + + /** + * Use the Area relation Area object + * + * @see useQuery() + * + * @param string $relationAlias optional alias for the relation, + * to be used as main alias in the secondary query + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return \Thelia\Model\AreaQuery A secondary query class using the current class as primary query + */ + public function useAreaQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + return $this + ->joinArea($relationAlias, $joinType) + ->useQuery($relationAlias ? $relationAlias : 'Area', '\Thelia\Model\AreaQuery'); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayDeliveryPrice $mondialRelayDeliveryPrice Object to remove from the list of results + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function prune($mondialRelayDeliveryPrice = null) + { + if ($mondialRelayDeliveryPrice) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $mondialRelayDeliveryPrice->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_delivery_price table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayDeliveryPriceTableMap::clearInstancePool(); + MondialRelayDeliveryPriceTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayDeliveryPrice or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayDeliveryPrice object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayDeliveryPriceTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayDeliveryPriceTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayDeliveryPriceQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php new file mode 100644 index 00000000..197cea4e --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php @@ -0,0 +1,1168 @@ +modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayPickupAddress instance. If + * obj is an instance of MondialRelayPickupAddress, delegates to + * equals(MondialRelayPickupAddress). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayPickupAddress The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayPickupAddress The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [json_relay_data] column value. + * + * @return string + */ + public function getJsonRelayData() + { + + return $this->json_relay_data; + } + + /** + * Get the [order_address_id] column value. + * + * @return int + */ + public function getOrderAddressId() + { + + return $this->order_address_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [json_relay_data] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setJsonRelayData($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->json_relay_data !== $v) { + $this->json_relay_data = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::JSON_RELAY_DATA] = true; + } + + + return $this; + } // setJsonRelayData() + + /** + * Set the value of [order_address_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setOrderAddressId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->order_address_id !== $v) { + $this->order_address_id = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID] = true; + } + + + return $this; + } // setOrderAddressId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('JsonRelayData', TableMap::TYPE_PHPNAME, $indexType)]; + $this->json_relay_data = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('OrderAddressId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->order_address_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 3; // 3 = MondialRelayPickupAddressTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayPickupAddress object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayPickupAddressQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayPickupAddress::setDeleted() + * @see MondialRelayPickupAddress::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayPickupAddressQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayPickupAddressTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayPickupAddressTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA)) { + $modifiedColumns[':p' . $index++] = 'JSON_RELAY_DATA'; + } + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID)) { + $modifiedColumns[':p' . $index++] = 'ORDER_ADDRESS_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_pickup_address (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'JSON_RELAY_DATA': + $stmt->bindValue($identifier, $this->json_relay_data, PDO::PARAM_STR); + break; + case 'ORDER_ADDRESS_ID': + $stmt->bindValue($identifier, $this->order_address_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayPickupAddressTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getJsonRelayData(); + break; + case 2: + return $this->getOrderAddressId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array()) + { + if (isset($alreadyDumpedObjects['MondialRelayPickupAddress'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayPickupAddress'][$this->getPrimaryKey()] = true; + $keys = MondialRelayPickupAddressTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getJsonRelayData(), + $keys[2] => $this->getOrderAddressId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayPickupAddressTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setJsonRelayData($value); + break; + case 2: + $this->setOrderAddressId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayPickupAddressTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setJsonRelayData($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setOrderAddressId($arr[$keys[2]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ID)) $criteria->add(MondialRelayPickupAddressTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA)) $criteria->add(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, $this->json_relay_data); + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID)) $criteria->add(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $this->order_address_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + $criteria->add(MondialRelayPickupAddressTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayPickupAddress (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setJsonRelayData($this->getJsonRelayData()); + $copyObj->setOrderAddressId($this->getOrderAddressId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayPickupAddress Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->json_relay_data = null; + $this->order_address_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayPickupAddressTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php new file mode 100644 index 00000000..7bbaff95 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php @@ -0,0 +1,422 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayPickupAddress|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayPickupAddress A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, JSON_RELAY_DATA, ORDER_ADDRESS_ID FROM mondial_relay_pickup_address WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayPickupAddress(); + $obj->hydrate($row); + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayPickupAddress|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the json_relay_data column + * + * Example usage: + * + * $query->filterByJsonRelayData('fooValue'); // WHERE json_relay_data = 'fooValue' + * $query->filterByJsonRelayData('%fooValue%'); // WHERE json_relay_data LIKE '%fooValue%' + * + * + * @param string $jsonRelayData The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByJsonRelayData($jsonRelayData = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($jsonRelayData)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $jsonRelayData)) { + $jsonRelayData = str_replace('*', '%', $jsonRelayData); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, $jsonRelayData, $comparison); + } + + /** + * Filter the query on the order_address_id column + * + * Example usage: + * + * $query->filterByOrderAddressId(1234); // WHERE order_address_id = 1234 + * $query->filterByOrderAddressId(array(12, 34)); // WHERE order_address_id IN (12, 34) + * $query->filterByOrderAddressId(array('min' => 12)); // WHERE order_address_id > 12 + * + * + * @param mixed $orderAddressId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByOrderAddressId($orderAddressId = null, $comparison = null) + { + if (is_array($orderAddressId)) { + $useMinMax = false; + if (isset($orderAddressId['min'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($orderAddressId['max'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId, $comparison); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayPickupAddress $mondialRelayPickupAddress Object to remove from the list of results + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function prune($mondialRelayPickupAddress = null) + { + if ($mondialRelayPickupAddress) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $mondialRelayPickupAddress->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_pickup_address table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayPickupAddressTableMap::clearInstancePool(); + MondialRelayPickupAddressTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayPickupAddress or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayPickupAddress object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayPickupAddressTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayPickupAddressTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayPickupAddressTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayPickupAddressQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php new file mode 100644 index 00000000..b0e14075 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php @@ -0,0 +1,1311 @@ +modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayZoneConfiguration instance. If + * obj is an instance of MondialRelayZoneConfiguration, delegates to + * equals(MondialRelayZoneConfiguration). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayZoneConfiguration The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayZoneConfiguration The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [delivery_time] column value. + * + * @return int + */ + public function getDeliveryTime() + { + + return $this->delivery_time; + } + + /** + * Get the [delivery_type] column value. + * + * @return int + */ + public function getDeliveryType() + { + + return $this->delivery_type; + } + + /** + * Get the [area_id] column value. + * + * @return int + */ + public function getAreaId() + { + + return $this->area_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [delivery_time] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setDeliveryTime($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->delivery_time !== $v) { + $this->delivery_time = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::DELIVERY_TIME] = true; + } + + + return $this; + } // setDeliveryTime() + + /** + * Set the value of [delivery_type] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setDeliveryType($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->delivery_type !== $v) { + $this->delivery_type = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE] = true; + } + + + return $this; + } // setDeliveryType() + + /** + * Set the value of [area_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setAreaId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->area_id !== $v) { + $this->area_id = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::AREA_ID] = true; + } + + if ($this->aArea !== null && $this->aArea->getId() !== $v) { + $this->aArea = null; + } + + + return $this; + } // setAreaId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('DeliveryTime', TableMap::TYPE_PHPNAME, $indexType)]; + $this->delivery_time = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('DeliveryType', TableMap::TYPE_PHPNAME, $indexType)]; + $this->delivery_type = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('AreaId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->area_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayZoneConfigurationTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayZoneConfiguration object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + if ($this->aArea !== null && $this->area_id !== $this->aArea->getId()) { + $this->aArea = null; + } + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayZoneConfigurationQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + $this->aArea = null; + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayZoneConfiguration::setDeleted() + * @see MondialRelayZoneConfiguration::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayZoneConfigurationQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + // We call the save method on the following object(s) if they + // were passed to this object by their corresponding set + // method. This object relates to these object(s) by a + // foreign key reference. + + if ($this->aArea !== null) { + if ($this->aArea->isModified() || $this->aArea->isNew()) { + $affectedRows += $this->aArea->save($con); + } + $this->setArea($this->aArea); + } + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayZoneConfigurationTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME)) { + $modifiedColumns[':p' . $index++] = 'DELIVERY_TIME'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE)) { + $modifiedColumns[':p' . $index++] = 'DELIVERY_TYPE'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::AREA_ID)) { + $modifiedColumns[':p' . $index++] = 'AREA_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_zone_configuration (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'DELIVERY_TIME': + $stmt->bindValue($identifier, $this->delivery_time, PDO::PARAM_INT); + break; + case 'DELIVERY_TYPE': + $stmt->bindValue($identifier, $this->delivery_type, PDO::PARAM_INT); + break; + case 'AREA_ID': + $stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayZoneConfigurationTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getDeliveryTime(); + break; + case 2: + return $this->getDeliveryType(); + break; + case 3: + return $this->getAreaId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE. + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) + { + if (isset($alreadyDumpedObjects['MondialRelayZoneConfiguration'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayZoneConfiguration'][$this->getPrimaryKey()] = true; + $keys = MondialRelayZoneConfigurationTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getDeliveryTime(), + $keys[2] => $this->getDeliveryType(), + $keys[3] => $this->getAreaId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + if ($includeForeignObjects) { + if (null !== $this->aArea) { + $result['Area'] = $this->aArea->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true); + } + } + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayZoneConfigurationTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setDeliveryTime($value); + break; + case 2: + $this->setDeliveryType($value); + break; + case 3: + $this->setAreaId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayZoneConfigurationTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setDeliveryTime($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setDeliveryType($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setAreaId($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::ID)) $criteria->add(MondialRelayZoneConfigurationTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME)) $criteria->add(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $this->delivery_time); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE)) $criteria->add(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $this->delivery_type); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::AREA_ID)) $criteria->add(MondialRelayZoneConfigurationTableMap::AREA_ID, $this->area_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + $criteria->add(MondialRelayZoneConfigurationTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayZoneConfiguration (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setDeliveryTime($this->getDeliveryTime()); + $copyObj->setDeliveryType($this->getDeliveryType()); + $copyObj->setAreaId($this->getAreaId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayZoneConfiguration Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Declares an association between this object and a ChildArea object. + * + * @param ChildArea $v + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + * @throws PropelException + */ + public function setArea(ChildArea $v = null) + { + if ($v === null) { + $this->setAreaId(NULL); + } else { + $this->setAreaId($v->getId()); + } + + $this->aArea = $v; + + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the ChildArea object, it will not be re-added. + if ($v !== null) { + $v->addMondialRelayZoneConfiguration($this); + } + + + return $this; + } + + + /** + * Get the associated ChildArea object + * + * @param ConnectionInterface $con Optional Connection object. + * @return ChildArea The associated ChildArea object. + * @throws PropelException + */ + public function getArea(ConnectionInterface $con = null) + { + if ($this->aArea === null && ($this->area_id !== null)) { + $this->aArea = AreaQuery::create()->findPk($this->area_id, $con); + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + $this->aArea->addMondialRelayZoneConfigurations($this); + */ + } + + return $this->aArea; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->delivery_time = null; + $this->delivery_type = null; + $this->area_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + $this->aArea = null; + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayZoneConfigurationTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php new file mode 100644 index 00000000..982569d6 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php @@ -0,0 +1,564 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayZoneConfiguration|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayZoneConfiguration A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, DELIVERY_TIME, DELIVERY_TYPE, AREA_ID FROM mondial_relay_zone_configuration WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayZoneConfiguration(); + $obj->hydrate($row); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayZoneConfiguration|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the delivery_time column + * + * Example usage: + * + * $query->filterByDeliveryTime(1234); // WHERE delivery_time = 1234 + * $query->filterByDeliveryTime(array(12, 34)); // WHERE delivery_time IN (12, 34) + * $query->filterByDeliveryTime(array('min' => 12)); // WHERE delivery_time > 12 + * + * + * @param mixed $deliveryTime The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByDeliveryTime($deliveryTime = null, $comparison = null) + { + if (is_array($deliveryTime)) { + $useMinMax = false; + if (isset($deliveryTime['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($deliveryTime['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime, $comparison); + } + + /** + * Filter the query on the delivery_type column + * + * Example usage: + * + * $query->filterByDeliveryType(1234); // WHERE delivery_type = 1234 + * $query->filterByDeliveryType(array(12, 34)); // WHERE delivery_type IN (12, 34) + * $query->filterByDeliveryType(array('min' => 12)); // WHERE delivery_type > 12 + * + * + * @param mixed $deliveryType The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByDeliveryType($deliveryType = null, $comparison = null) + { + if (is_array($deliveryType)) { + $useMinMax = false; + if (isset($deliveryType['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($deliveryType['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType, $comparison); + } + + /** + * Filter the query on the area_id column + * + * Example usage: + * + * $query->filterByAreaId(1234); // WHERE area_id = 1234 + * $query->filterByAreaId(array(12, 34)); // WHERE area_id IN (12, 34) + * $query->filterByAreaId(array('min' => 12)); // WHERE area_id > 12 + * + * + * @see filterByArea() + * + * @param mixed $areaId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByAreaId($areaId = null, $comparison = null) + { + if (is_array($areaId)) { + $useMinMax = false; + if (isset($areaId['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($areaId['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId, $comparison); + } + + /** + * Filter the query by a related \Thelia\Model\Area object + * + * @param \Thelia\Model\Area|ObjectCollection $area The related object(s) to use as filter + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByArea($area, $comparison = null) + { + if ($area instanceof \Thelia\Model\Area) { + return $this + ->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $area->getId(), $comparison); + } elseif ($area instanceof ObjectCollection) { + if (null === $comparison) { + $comparison = Criteria::IN; + } + + return $this + ->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $area->toKeyValue('PrimaryKey', 'Id'), $comparison); + } else { + throw new PropelException('filterByArea() only accepts arguments of type \Thelia\Model\Area or Collection'); + } + } + + /** + * Adds a JOIN clause to the query using the Area relation + * + * @param string $relationAlias optional alias for the relation + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function joinArea($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + $tableMap = $this->getTableMap(); + $relationMap = $tableMap->getRelation('Area'); + + // create a ModelJoin object for this join + $join = new ModelJoin(); + $join->setJoinType($joinType); + $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias); + if ($previousJoin = $this->getPreviousJoin()) { + $join->setPreviousJoin($previousJoin); + } + + // add the ModelJoin to the current object + if ($relationAlias) { + $this->addAlias($relationAlias, $relationMap->getRightTable()->getName()); + $this->addJoinObject($join, $relationAlias); + } else { + $this->addJoinObject($join, 'Area'); + } + + return $this; + } + + /** + * Use the Area relation Area object + * + * @see useQuery() + * + * @param string $relationAlias optional alias for the relation, + * to be used as main alias in the secondary query + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return \Thelia\Model\AreaQuery A secondary query class using the current class as primary query + */ + public function useAreaQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + return $this + ->joinArea($relationAlias, $joinType) + ->useQuery($relationAlias ? $relationAlias : 'Area', '\Thelia\Model\AreaQuery'); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayZoneConfiguration $mondialRelayZoneConfiguration Object to remove from the list of results + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function prune($mondialRelayZoneConfiguration = null) + { + if ($mondialRelayZoneConfiguration) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $mondialRelayZoneConfiguration->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_zone_configuration table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayZoneConfigurationTableMap::clearInstancePool(); + MondialRelayZoneConfigurationTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayZoneConfiguration or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayZoneConfiguration object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayZoneConfigurationTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayZoneConfigurationTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayZoneConfigurationQuery diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php new file mode 100644 index 00000000..8271f1c8 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php @@ -0,0 +1,426 @@ + array('Id', 'Level', 'MaxValue', 'PriceWithTax', ), + self::TYPE_STUDLYPHPNAME => array('id', 'level', 'maxValue', 'priceWithTax', ), + self::TYPE_COLNAME => array(MondialRelayDeliveryInsuranceTableMap::ID, MondialRelayDeliveryInsuranceTableMap::LEVEL, MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, ), + self::TYPE_RAW_COLNAME => array('ID', 'LEVEL', 'MAX_VALUE', 'PRICE_WITH_TAX', ), + self::TYPE_FIELDNAME => array('id', 'level', 'max_value', 'price_with_tax', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'Level' => 1, 'MaxValue' => 2, 'PriceWithTax' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'level' => 1, 'maxValue' => 2, 'priceWithTax' => 3, ), + self::TYPE_COLNAME => array(MondialRelayDeliveryInsuranceTableMap::ID => 0, MondialRelayDeliveryInsuranceTableMap::LEVEL => 1, MondialRelayDeliveryInsuranceTableMap::MAX_VALUE => 2, MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'LEVEL' => 1, 'MAX_VALUE' => 2, 'PRICE_WITH_TAX' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'level' => 1, 'max_value' => 2, 'price_with_tax' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_delivery_insurance'); + $this->setPhpName('MondialRelayDeliveryInsurance'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayDeliveryInsurance'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('LEVEL', 'Level', 'INTEGER', true, null, null); + $this->addColumn('MAX_VALUE', 'MaxValue', 'DECIMAL', true, 16, 0); + $this->addColumn('PRICE_WITH_TAX', 'PriceWithTax', 'DECIMAL', true, 16, 0); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayDeliveryInsuranceTableMap::CLASS_DEFAULT : MondialRelayDeliveryInsuranceTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayDeliveryInsurance object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayDeliveryInsuranceTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayDeliveryInsuranceTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayDeliveryInsuranceTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayDeliveryInsuranceTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::ID); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::LEVEL); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.LEVEL'); + $criteria->addSelectColumn($alias . '.MAX_VALUE'); + $criteria->addSelectColumn($alias . '.PRICE_WITH_TAX'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME)->getTable(MondialRelayDeliveryInsuranceTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayDeliveryInsuranceTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayDeliveryInsuranceTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayDeliveryInsurance or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayDeliveryInsurance object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayDeliveryInsurance) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayDeliveryInsuranceQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayDeliveryInsuranceTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayDeliveryInsuranceTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_delivery_insurance table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayDeliveryInsuranceQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayDeliveryInsurance or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayDeliveryInsurance object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayDeliveryInsurance object + } + + if ($criteria->containsKey(MondialRelayDeliveryInsuranceTableMap::ID) && $criteria->keyContainsValue(MondialRelayDeliveryInsuranceTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayDeliveryInsuranceTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayDeliveryInsuranceQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayDeliveryInsuranceTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayDeliveryInsuranceTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php new file mode 100644 index 00000000..d2b4cb26 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php @@ -0,0 +1,427 @@ + array('Id', 'MaxWeight', 'PriceWithTax', 'AreaId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'maxWeight', 'priceWithTax', 'areaId', ), + self::TYPE_COLNAME => array(MondialRelayDeliveryPriceTableMap::ID, MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, MondialRelayDeliveryPriceTableMap::AREA_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'MAX_WEIGHT', 'PRICE_WITH_TAX', 'AREA_ID', ), + self::TYPE_FIELDNAME => array('id', 'max_weight', 'price_with_tax', 'area_id', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'MaxWeight' => 1, 'PriceWithTax' => 2, 'AreaId' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'maxWeight' => 1, 'priceWithTax' => 2, 'areaId' => 3, ), + self::TYPE_COLNAME => array(MondialRelayDeliveryPriceTableMap::ID => 0, MondialRelayDeliveryPriceTableMap::MAX_WEIGHT => 1, MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX => 2, MondialRelayDeliveryPriceTableMap::AREA_ID => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'MAX_WEIGHT' => 1, 'PRICE_WITH_TAX' => 2, 'AREA_ID' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'max_weight' => 1, 'price_with_tax' => 2, 'area_id' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_delivery_price'); + $this->setPhpName('MondialRelayDeliveryPrice'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayDeliveryPrice'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('MAX_WEIGHT', 'MaxWeight', 'DECIMAL', true, 16, 0); + $this->addColumn('PRICE_WITH_TAX', 'PriceWithTax', 'DECIMAL', true, 16, 0); + $this->addForeignKey('AREA_ID', 'AreaId', 'INTEGER', 'area', 'ID', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + $this->addRelation('Area', '\\Thelia\\Model\\Area', RelationMap::MANY_TO_ONE, array('area_id' => 'id', ), 'CASCADE', 'RESTRICT'); + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayDeliveryPriceTableMap::CLASS_DEFAULT : MondialRelayDeliveryPriceTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayDeliveryPrice object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayDeliveryPriceTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayDeliveryPriceTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayDeliveryPriceTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayDeliveryPriceTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::ID); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::AREA_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.MAX_WEIGHT'); + $criteria->addSelectColumn($alias . '.PRICE_WITH_TAX'); + $criteria->addSelectColumn($alias . '.AREA_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryPriceTableMap::DATABASE_NAME)->getTable(MondialRelayDeliveryPriceTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayDeliveryPriceTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayDeliveryPriceTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayDeliveryPrice or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayDeliveryPrice object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayDeliveryPrice) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryPriceTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayDeliveryPriceQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayDeliveryPriceTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayDeliveryPriceTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_delivery_price table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayDeliveryPriceQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayDeliveryPrice or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayDeliveryPrice object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayDeliveryPrice object + } + + if ($criteria->containsKey(MondialRelayDeliveryPriceTableMap::ID) && $criteria->keyContainsValue(MondialRelayDeliveryPriceTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayDeliveryPriceTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayDeliveryPriceQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayDeliveryPriceTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayDeliveryPriceTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php new file mode 100644 index 00000000..9fce2b25 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php @@ -0,0 +1,418 @@ + array('Id', 'JsonRelayData', 'OrderAddressId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'jsonRelayData', 'orderAddressId', ), + self::TYPE_COLNAME => array(MondialRelayPickupAddressTableMap::ID, MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'JSON_RELAY_DATA', 'ORDER_ADDRESS_ID', ), + self::TYPE_FIELDNAME => array('id', 'json_relay_data', 'order_address_id', ), + self::TYPE_NUM => array(0, 1, 2, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'JsonRelayData' => 1, 'OrderAddressId' => 2, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'jsonRelayData' => 1, 'orderAddressId' => 2, ), + self::TYPE_COLNAME => array(MondialRelayPickupAddressTableMap::ID => 0, MondialRelayPickupAddressTableMap::JSON_RELAY_DATA => 1, MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID => 2, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'JSON_RELAY_DATA' => 1, 'ORDER_ADDRESS_ID' => 2, ), + self::TYPE_FIELDNAME => array('id' => 0, 'json_relay_data' => 1, 'order_address_id' => 2, ), + self::TYPE_NUM => array(0, 1, 2, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_pickup_address'); + $this->setPhpName('MondialRelayPickupAddress'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayPickupAddress'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('JSON_RELAY_DATA', 'JsonRelayData', 'CLOB', true, null, null); + $this->addColumn('ORDER_ADDRESS_ID', 'OrderAddressId', 'INTEGER', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayPickupAddressTableMap::CLASS_DEFAULT : MondialRelayPickupAddressTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayPickupAddress object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayPickupAddressTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayPickupAddressTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayPickupAddressTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayPickupAddressTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::ID); + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA); + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.JSON_RELAY_DATA'); + $criteria->addSelectColumn($alias . '.ORDER_ADDRESS_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayPickupAddressTableMap::DATABASE_NAME)->getTable(MondialRelayPickupAddressTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayPickupAddressTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayPickupAddressTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayPickupAddressTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayPickupAddress or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayPickupAddress object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayPickupAddress) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + $criteria->add(MondialRelayPickupAddressTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayPickupAddressQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayPickupAddressTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayPickupAddressTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_pickup_address table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayPickupAddressQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayPickupAddress or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayPickupAddress object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayPickupAddress object + } + + if ($criteria->containsKey(MondialRelayPickupAddressTableMap::ID) && $criteria->keyContainsValue(MondialRelayPickupAddressTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayPickupAddressTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayPickupAddressQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayPickupAddressTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayPickupAddressTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php new file mode 100644 index 00000000..45374e38 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php @@ -0,0 +1,427 @@ + array('Id', 'DeliveryTime', 'DeliveryType', 'AreaId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'deliveryTime', 'deliveryType', 'areaId', ), + self::TYPE_COLNAME => array(MondialRelayZoneConfigurationTableMap::ID, MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, MondialRelayZoneConfigurationTableMap::AREA_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'DELIVERY_TIME', 'DELIVERY_TYPE', 'AREA_ID', ), + self::TYPE_FIELDNAME => array('id', 'delivery_time', 'delivery_type', 'area_id', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'DeliveryTime' => 1, 'DeliveryType' => 2, 'AreaId' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'deliveryTime' => 1, 'deliveryType' => 2, 'areaId' => 3, ), + self::TYPE_COLNAME => array(MondialRelayZoneConfigurationTableMap::ID => 0, MondialRelayZoneConfigurationTableMap::DELIVERY_TIME => 1, MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE => 2, MondialRelayZoneConfigurationTableMap::AREA_ID => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'DELIVERY_TIME' => 1, 'DELIVERY_TYPE' => 2, 'AREA_ID' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'delivery_time' => 1, 'delivery_type' => 2, 'area_id' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_zone_configuration'); + $this->setPhpName('MondialRelayZoneConfiguration'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayZoneConfiguration'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('DELIVERY_TIME', 'DeliveryTime', 'INTEGER', true, null, null); + $this->addColumn('DELIVERY_TYPE', 'DeliveryType', 'INTEGER', true, 1, null); + $this->addForeignKey('AREA_ID', 'AreaId', 'INTEGER', 'area', 'ID', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + $this->addRelation('Area', '\\Thelia\\Model\\Area', RelationMap::MANY_TO_ONE, array('area_id' => 'id', ), 'CASCADE', 'RESTRICT'); + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayZoneConfigurationTableMap::CLASS_DEFAULT : MondialRelayZoneConfigurationTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayZoneConfiguration object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayZoneConfigurationTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayZoneConfigurationTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayZoneConfigurationTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayZoneConfigurationTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::ID); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::AREA_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.DELIVERY_TIME'); + $criteria->addSelectColumn($alias . '.DELIVERY_TYPE'); + $criteria->addSelectColumn($alias . '.AREA_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayZoneConfigurationTableMap::DATABASE_NAME)->getTable(MondialRelayZoneConfigurationTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayZoneConfigurationTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayZoneConfigurationTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayZoneConfiguration or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayZoneConfiguration object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayZoneConfiguration) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + $criteria->add(MondialRelayZoneConfigurationTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayZoneConfigurationQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayZoneConfigurationTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayZoneConfigurationTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_zone_configuration table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayZoneConfigurationQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayZoneConfiguration or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayZoneConfiguration object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayZoneConfiguration object + } + + if ($criteria->containsKey(MondialRelayZoneConfigurationTableMap::ID) && $criteria->keyContainsValue(MondialRelayZoneConfigurationTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayZoneConfigurationTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayZoneConfigurationQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayZoneConfigurationTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayZoneConfigurationTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php b/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php new file mode 100644 index 00000000..25d3f39a --- /dev/null +++ b/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php @@ -0,0 +1,10 @@ +findOne(); + } catch (\Exception $e) { + $database = new Database($con); + $database->insertSql(null, [ __DIR__ . '/Config/thelia.sql' ]); + + // Test Enseigne and private key + self::setConfigValue(self::CODE_ENSEIGNE, "BDTEST13"); + self::setConfigValue(self::PRIVATE_KEY, "PrivateK"); + self::setConfigValue(self::WEBSERVICE_URL, "https://api.mondialrelay.com/Web_Services.asmx?WSDL"); + self::setConfigValue(self::GOOGLE_MAPS_API_KEY, "get_your_own_api_key"); + self::setConfigValue(self::ALLOW_HOME_DELIVERY, true); + self::setConfigValue(self::ALLOW_RELAY_DELIVERY, true); + self::setConfigValue(self::ALLOW_INSURANCE, true); + + // Create mondial relay shipping zones for relay and home delivery + + $moduleId = self::getModuleId(); + + $rateFromEuro = Currency::getDefaultCurrency()->getRate(); + + $moduleConfiguration = json_decode(file_get_contents(__DIR__. '/Config/config-data.json')); + + if (false === $moduleConfiguration) { + throw new TheliaProcessException("Invalid JSON configuration for Mondial Relay module"); + } + + // Create all shipping zones, and associate Mondial relay module with them. + foreach ($moduleConfiguration->shippingZones as $shippingZone) { + AreaQuery::create()->filterByName($shippingZone->name)->delete(); + + $area = new Area(); + + $area + ->setName($shippingZone->name) + ->save(); + + foreach ($shippingZone->countries as $countryIsoCode) { + if (null !== $country = CountryQuery::create()->findOneByIsoalpha3($countryIsoCode)) { + (new CountryArea()) + ->setAreaId($area->getId()) + ->setCountryId($country->getId()) + ->save(); + } + } + + // Define zone attributes + (new MondialRelayZoneConfiguration()) + ->setAreaId($area->getId()) + ->setDeliveryType($shippingZone->delivery_type) + ->setDeliveryTime($shippingZone->delivery_time_in_days) + ->save(); + + // Attach this zone to our module + (new AreaDeliveryModule()) + ->setArea($area) + ->setDeliveryModuleId($moduleId) + ->save(); + + // Create base prices + foreach ($shippingZone->prices as $price) { + (new MondialRelayDeliveryPrice()) + ->setAreaId($area->getId()) + ->setMaxWeight($price->up_to) + ->setPriceWithTax($price->price_euro * $rateFromEuro) + ->save(); + } + } + + // Insurances + foreach ($moduleConfiguration->insurances as $insurance) { + (new MondialRelayDeliveryInsurance()) + ->setMaxValue($insurance->value) + ->setPriceWithTax($insurance->price_with_tax_euro) + ->setLevel($insurance->level) + ->save(); + } + + if (null === MessageQuery::create()->findOneByName(self::TRACKING_MESSAGE_NAME)) { + $message = new Message(); + $message + ->setName(self::TRACKING_MESSAGE_NAME) + ->setHtmlLayoutFileName('') + ->setHtmlTemplateFileName(self::TRACKING_MESSAGE_NAME.'.html') + ->setTextLayoutFileName('') + ->setTextTemplateFileName(self::TRACKING_MESSAGE_NAME.'.txt') + ; + + $languages = LangQuery::create()->find(); + + /** @var Lang $language */ + foreach ($languages as $language) { + $locale = $language->getLocale(); + $message->setLocale($locale); + + $message->setTitle( + Translator::getInstance()->trans('Mondial Relay tracking information', [], self::DOMAIN_NAME, $locale) + ); + + $message->setSubject( + Translator::getInstance()->trans('Your order has been shipped', [], self::DOMAIN_NAME, $locale) + ); + } + + $message->save(); + } + + /* Deploy the module's image */ + $module = $this->getModuleModel(); + if (ModuleImageQuery::create()->filterByModule($module)->count() == 0) { + $this->deployImageFolder($module, sprintf('%s/images', __DIR__), $con); + } + } + } + + /** + * @param ConnectionInterface|null $con + * @param bool $deleteModuleData + * @throws \Propel\Runtime\Exception\PropelException + */ + public function destroy(ConnectionInterface $con = null, $deleteModuleData = false) + { + if ($deleteModuleData) { + // Delete message + MessageQuery::create()->filterByName(self::TRACKING_MESSAGE_NAME)->delete($con); + + // Delete module config data + ModuleConfigQuery::create()->filterByModuleId(self::getModuleId())->delete($con); + + // Delete module tables. + if (null !== $con) { + $database = new Database($con); + $database->insertSql(null, [__DIR__ . '/Config/drop.sql']); + } + } + + parent::destroy($con, $deleteModuleData); + } +} diff --git a/local/modules/MondialRelay/Readme.md b/local/modules/MondialRelay/Readme.md new file mode 100644 index 00000000..8d25067b --- /dev/null +++ b/local/modules/MondialRelay/Readme.md @@ -0,0 +1,39 @@ +# Module de livraison Mondial Relay + +Ce module vous permet de proposer à vos clients une livraison avec le transporteur Mondial Relay, +en point relais ou directement à domicile, en fonction des options disponibles +dans le pays de destination. + +## Installation + +Ajoutez le module depuis la page Modules de votre back-office, ou directement sur votre serveur si vous préférez. Vous +pouvez aussi utiliser composer : + + composer require thelia/mondialrelay:~1.0 + +## Configuration + +Par défaut, le module utilise des identifiants de test. Rendez-vous dans la configuration du module pour indiquer vos +propres identifiants Mondial Relay, et configurer les divers aspects du module. + +Lors de son installation, le module crée cinq zones de livraison, qui correspondent aux zones proposées par +Mondial Relay [sur la page des tarifs](http://www.mondialrelay.fr/envoi-de-colis/premiere-visite/#Tarifs "sur cette page"). + +Chacun de ces zones de livraison peut proposer la livraison en point relais, la livraison à domicile, ou les deux. +Vous pouvez régler ceci dans l'onglet "Prix" de la configuration du module. + +Pour chaque zone, vous pouvez définir des prix par tranche de poids. Ces prix sont initialisés l'installation du module +avec les prix de mars 2018. + +## Intégration + +Le module utilise les hooks de Thelia, aucun travail d'intégration n'est nécessaire. + +Pour une livraison en point relais, les caractéristiques du relais (numéro, coordonnées, horaires d'ouverture) sont +communiquées à vos clients dans les e-mails, documents PDF et historique de commande. + +## Notifications par email + +Si vous avez saisi un numéro de suivi, une notification d'envoi est expédiée à vos clients lorsque la commande passe à + l'état "envoyé". Vous pouvez modifier le contenu de ce mail dans les fichiers + `templates/email/default/mondial-relay-tracking-message.html` et `templates/email/default/mondial-relay-tracking-message.txt` diff --git a/local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf b/local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4c4ed390753b51069c10b2618bf110af21880206 GIT binary patch literal 798163 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�X(0Xl+>ZIb8SaWK53n;FL80rSFf)@%gyT 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�MXZ{5SWfkI%Bmkl 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

N!)1Gf{y=>W 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 G>i-koneTD{ literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/composer.json b/local/modules/MondialRelay/composer.json new file mode 100644 index 00000000..aeac3166 --- /dev/null +++ b/local/modules/MondialRelay/composer.json @@ -0,0 +1,11 @@ +{ + "name": "thelia/mondial-relay-module", + "license": "LGPL-3.0-or-later", + "type": "thelia-module", + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "extra": { + "installer-name": "MondialRelay" + } +} diff --git a/local/modules/MondialRelay/composer.lock b/local/modules/MondialRelay/composer.lock new file mode 100644 index 00000000..f35aeffa --- /dev/null +++ b/local/modules/MondialRelay/composer.lock @@ -0,0 +1,59 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "9dba6910bb06325dfa941ec161c6c334", + "packages": [ + { + "name": "xaviborja/php-mondialrelay-api", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/xaviborja/php-mondialrelay-api.git", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/xaviborja/php-mondialrelay-api/zipball/b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "shasum": "" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "MondialRelay\\": "src/MondialRelay/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)", + "time": "2017-06-21T12:22:06+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "xaviborja/php-mondialrelay-api": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/local/modules/MondialRelay/images/logo-mr.png b/local/modules/MondialRelay/images/logo-mr.png new file mode 100644 index 0000000000000000000000000000000000000000..0b887e90891010ba9b16fd65e6553dd5d2bd1b04 GIT binary patch literal 10940 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 + {include file = "includes/inner-form-toolbar.html" + hide_flags = true + page_url = "{url path='/admin/module/MondialRelay'}" + close_url = "{url path='/admin/modules'}" + hide_save_and_close_button = true + } + + {form_hidden_fields form=$form} + + {if $form_error}

{$form_error_message}
{/if} + +
+ +{/form} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html new file mode 100644 index 00000000..1a4e2a7c --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html @@ -0,0 +1,98 @@ +{form name="mondialrelay.insurances_update_form"} +
+ {form_hidden_fields form=$form} + + {if $form_error}
{$form_error_message}
{/if} + + + + + + + + + + + + {loop type="mondialrelay.insurances" name="insurances"} + + + + + + + + {/loop} + + + + + + +
{intl l='Cart value' d='mondialrelay.bo.default'}{intl l='Insurance price with tax' d='mondialrelay.bo.default'} 
+ {form_field field="max_value"} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ {form_field field="price_with_tax"} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ + + +
+ +
+
+{/form} + +{form name="mondialrelay.insurance_create_form"} +
+ {form_hidden_fields form=$form} + + {if $form_error}
{$form_error_message}
{/if} + + + + + + + + + + + + + + +
{intl l='Add a new insurance' d='mondialrelay.bo.default'}
+ {form_field field="max_value"} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ {form_field field="price_with_tax"} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ +
+
+{/form} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html new file mode 100644 index 00000000..e6be0e28 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html @@ -0,0 +1,158 @@ +{$module_id = {$smarty.request.module_id|default:$module_id|default:0}} + +{ifloop rel="module-areas"} +

 

+ + {loop type="area" name="module-areas" module_id=$module_id order='id'} +
+
+ {intl l="Shipping zone \"%name\"" name=$NAME d='mondialrelay.bo.default'} +
+ +
+
+
+
+
+ {intl l='Delivery prices' d='mondialrelay.bo.default'} +
+ +
+ {form name="mondialrelay.prices_update_form"} +
+ {form_hidden_fields form=$form} + + + + + + + + + + + + {loop type="mondialrelay.prices" name="prices" area_id=$ID} + + + + + + + + {/loop} + + + + + + + +
{intl l='Cart weight up to...' d='mondialrelay.bo.default'}{intl l='Price with tax' d='mondialrelay.bo.default'} 
+ {form_field field="max_weight" value_key=$ID} +
+ + {intl l='kg' d='mondialrelay.bo.default'} +
+ {/form_field} +
+ {form_field field="price" value_key=$ID} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ +
+ +
+
+ {/form} + + {form name="mondialrelay.price_form"} +
+ + {form_hidden_fields form=$form} + + + + + + + + + + + + + + +
{intl l='Add a new price' d='mondialrelay.bo.default'}
+ {form_field field="max_weight"} +
+ + {intl l='kg' d='mondialrelay.bo.default'} +
+ {/form_field} +
+ {form_field field="price"} +
+ + {currency attr="symbol"} +
+ {/form_field} +
+ +
+
+ {/form} +
+
+
+ +
+
+
+ {intl l='Area properties' d='mondialrelay.bo.default'} +
+ +
+ {form name="mondialrelay.area_attributes_update_form"} +
+ {form_hidden_fields form=$form} + + {loop type="mondialrelay.area-attributes" name="area-attributes" area_id=$ID} + {custom_render_form_field field="delivery_time"} +
+ + {intl l='days' d='mondialrelay.bo.default'} +
+ {/custom_render_form_field} + + {render_form_field field="delivery_type" value=$DELIVERY_TYPE} + + + {/loop} +
+ {/form} +
+
+
+ +
+
+
+ {/loop} +{/ifloop} + +{elseloop rel="module-areas"} +
+ {intl l='There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' url={url path='/admin/configuration/shipping_zones'} d='mondialrelay.bo.default'} +
+{/elseloop} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png new file mode 100644 index 0000000000000000000000000000000000000000..9322ffd6599139aa4ad491eea36040e45056605d GIT binary patch literal 5134 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 z z3M*0Xcj%o|>Xq0T2|_UOnFmyggUlKNKT`WjY-04eu-?+f17I}#^+7u8s!8Qjfy^B| z4Nv)M7u*1ECSo00>)5xN#wUQId2o_m_q|p7Sq6RutfwFV-+S-QQUKXdfkI(R(DI1htUUO2fUpcue zyveI?$*W&}zE2g~*4Mrks&vLQa0{UTYFb=zk=nsO_0%5<`wWOSBQN{kXoe09Hsc9(QmvYl zmPLZc{tCH7^cmm(AYbNmR)uqGy3tkNgoS2tosaw*R~xPz5}9MsJ*l`|*XcAH^E~dZ z9vGQB)lZ$Ks!pOw^q_!Se{}7@sY2h7Er-kcdcsHO%FA7>+G-(0-JBZA|*=T>Z&*5=dY=+Zl+)YDTtOj^z5j}i<3CCjkAL*qU zmzKV_cg}^Wjw*Gh4z4q4U2pSdZv1e01l#zXBzYCUYA~(YNN$+;LZSV3I&^BCXRSQf z!zI-c9*FFHkPq*lX>`VZ@!#$K;`b}M7QUa)kT*i@0f|g5NP@x{RGq{rVXETBrA%IT zytktCog7PD<4Wa`cCW ze3wVXf$Xg`JPrAW(na$UuHa?Z$8t1Jh@1vc2(|Zs?wgQAQP_>(S;+Yz)0x0Yh77>j zY##Ajto6cU4l#&klZ-4wTLR;_Ui)Joolt_ReE5qbr&c&#(O+KDDW6)o&v}3OuFf68 z-=xd4{DA!Olnwfe1N5x#pt7>PrlAv(uGDPVRj1#LX#Uam)P&!Y;-F%>inHGc@0@Sg z|B%tFN}ZFo3e95McfdDyFbl9wTzC(@RpM^21uIMWjIH9QqIO>DK$1PAE4jT&;4VxR z^HuhM6?PSt$5)32^B| zMK-Vq$GXZHrf0^T266>d_1L`DujHd|lY2f|B8EK%j_bp@V^76M_<$41UQUu^f;&y_ zbHDkrD`x#?+#}uKj*-*p+C;r2$;zhLB};7*emGe1v~_3+pI9&7TFX|AmIgnEL=3}) z%;+q+2^d32R{AfkN@j>xO#=htS1toBw$=Mt4}ZLUTleVR@GGhZ?v#l1vJwqOpPT2B z>sL9V6R@7A$_ClIMOLrC{&N{`fcDxxHT%1~CBjmvZhhJ)(hp@@k1Xiam=F-+vX8bIgc{%r`(K4w? zZ~a54smRhvChoKTZ8+wgj%)!u=g?7KU(b_B zYthnqLuhhe)s2$#YNn=(R|yqFEc zNM(oV?pPaW?@Na=X`Q;2eMzz{WrQw5Y~Jw|tS4yhwQI?Bb4-*Lxmb5{UCwqVwGAkU zYiPQ=C(1IBCQh20nB+9jn%@FYt=d&BQzsc57(~mhJR7GG%d!+ox@`b@bR39DNG1}ZT#q~?r)J6?6Z)UL zltnGlehu8W5hGW$l1{99gJ6RG#goVh_Vuk9R{;8dA3a^}j7{FVq5)9hc-HliqDddt zy{J>wJ?YqGX-cIaQhVg)YHBE>rDvi#_hO&C_$2axPpS-4XWf|wl|kTF8+Nn!fIpw) zy(M;>{Px$a0|J>gKBWbfe736ZP&bL} zzKBse9DeGY1_e@~Icx506!x13%n@`W(%~Py=uns(^_fC;Ur)s<^%i%qZXR{Kf({y7 zVYyj83SPnT#vvj#~B$JR3(%(T3T9ZxJ>JK_TGOdd7{1jbht~>wp*T^ zsH#IEg0og`A^21FpG74QSrTO1gF|1|e;fWv=+o>0g#7og?1_>I+3c;4Jqc6?X9sCI zj8Wh>fx({~v9kZ5SQIO{@)LQn`z3jDVgmo1+~=LsA!q1>iDTKJ=^m+{1zE(V*}vME zEEKIkM9rndUFW2!lQK-j{k-t9C8!V_F;QBCI}{z3P7bk z!UIfwnXCGP;yaNgLF4|T!tn)A{l*eh%%U4LHYP{f5&t(qXrD%k@%@Q|eDI%Yk1DZ! zeS}-vu3(e0L$VUK`DqsF1QO}O9N+bQ`TeXI{WzWT)%g*Fp#KWUZjreqq4gfHb!-V1 z?<#VwA0cpOQ!7(M@*gZYhx7*h9I=80A;%_?z;78;TLz~~*%H$@;^~I;r##r literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js new file mode 100644 index 00000000..01e7f309 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function s(s){var e=!1;return t('[data-notify="container"]').each(function(i,n){var a=t(n),o=a.find('[data-notify="title"]').text().trim(),r=a.find('[data-notify="message"]').html().trim(),l=o===t("
"+s.settings.content.title+"
").html().trim(),d=r===t("
"+s.settings.content.message+"
").html().trim(),g=a.hasClass("alert-"+s.settings.type);return l&&d&&g&&(e=!0),!e}),e}function e(e,n,a){var o={content:{message:"object"==typeof n?n.message:n,title:n.title?n.title:"",icon:n.icon?n.icon:"",url:n.url?n.url:"#",target:n.target?n.target:"-"}};a=t.extend(!0,{},o,a),this.settings=t.extend(!0,{},i,a),this._defaults=i,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&!s(this))&&this.init()}var i={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var t=arguments[0],s=1;s .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[n],this.$ele.addClass("alert-"+i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[n]);break;case"icon":var a=this.$ele.find('[data-notify="icon"]');"class"===t.settings.icon_type.toLowerCase()?a.removeClass(t.settings.content.icon).addClass(i[n]):(a.is("img")||a.find("img"),a.attr("src",i[n]));break;case"progress":var o=t.settings.delay-t.settings.delay*(i[n]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[n]).css("width",i[n]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[n]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[n]);break;default:this.$ele.find('[data-notify="'+n+'"]').html(i[n])}var r=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(r)},close:function(){t.close()}}},buildNotify:function(){var s=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,s.title,s.message,s.url,s.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var s=this,e=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){e=Math.max(e,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),this.settings.newest_on_top===!0&&(e=this.settings.offset.y),i[this.settings.placement.from]=e+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit-","moz-","o-","ms-",""),function(t,e){s.$ele[0].style[e+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),this.settings.newest_on_top===!0&&(e=parseInt(e)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(e)),t.isFunction(s.settings.onShow)&&s.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){s.$ele.removeClass(s.settings.animate.enter),t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)},600)},bind:function(){var s=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){s.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){s.$ele.data("notify-delay",s.settings.delay);var e=setInterval(function(){var t=parseInt(s.$ele.data("notify-delay"))-s.settings.timer;if("false"===s.$ele.data("data-hover")&&"pause"===s.settings.mouse_over||"pause"!=s.settings.mouse_over){var i=(s.settings.delay-t)/s.settings.delay*100;s.$ele.data("notify-delay",t),s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-s.settings.timer&&(clearInterval(e),s.close())},s.settings.timer)}},close:function(){var s=this,e=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),s.reposition(e),t.isFunction(s.settings.onClose)&&s.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(s.settings.onClosed)&&s.settings.onClosed.call(this)}),setTimeout(function(){i||(s.$ele.remove(),s.settings.onClosed&&s.settings.onClosed(s.$ele))},600)},reposition:function(s){var e=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);this.settings.newest_on_top===!0&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(e.settings.placement.from,s),s=parseInt(s)+parseInt(e.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(s){return i=t.extend(!0,{},i,s)},t.notifyClose=function(s){"warning"===s&&(s="danger"),"undefined"==typeof s||"all"===s?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===s||"info"===s||"warning"===s||"danger"===s?t(".alert-"+s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):s?t(s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+s+'"]').find('[data-notify="dismiss"]').trigger("click")},t.notifyCloseExcept=function(s){"warning"===s&&(s="danger"),"success"===s||"info"===s||"warning"===s||"danger"===s?t("[data-notify]").not(".alert-"+s).find('[data-notify="dismiss"]').trigger("click"):t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html new file mode 100644 index 00000000..4d1e625d --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html @@ -0,0 +1,53 @@ + diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html new file mode 100644 index 00000000..08b474a5 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html @@ -0,0 +1,27 @@ +{if $error_message} + + + +{/if} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html new file mode 100644 index 00000000..d0731b13 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html @@ -0,0 +1,38 @@ +{$current_tab = {$smarty.get.tab|default:'general'}} +
+
+
+ {intl l="Mondial Relay delivery configuration" d='mondialrelay.bo.default'} +
+
+ + + +
+
+
+ {include file="mondialrelay/ajax/general.html"} +
+
+ +
+
+ {include file="mondialrelay/ajax/prices.html" module_id=$module_id} +
+
+ + {* +
+
+ {include file="mondialrelay/ajax/insurances.html"} +
+
+ *} +
+
diff --git a/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html new file mode 100644 index 00000000..19182d50 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html @@ -0,0 +1,28 @@ +{extends file="email-layout.tpl"} + +{default_translation_domain domain='mondialrelay.email.default'} + +{* Do not provide a "Open in browser" link *} +{block name="browser"}{/block} +{* No pre-header *} +{block name="pre-header"}{/block} + +{* Subject *} +{block name="email-subject"}{intl l="Your %ref order has been shipped" ref=$REF}{/block} + +{* Title *} +{block name="email-title"}{intl l="Your %ref order has been shipped" ref=$REF}{/block} + +{* Content *} +{block name="email-content"} +{loop type="order" name="order" id=$order_id} + {loop type="customer" name="customer.order" current=false id=$CUSTOMER backend_context="1"} +

{intl l="Dear %first %last" last=$LASTNAME first=$FIRSTNAME},

+ {/loop} + +

{intl l="Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery." order_ref=$REF tracking_ref=$DELIVERY_REF}

+

{intl l="Details about this order are available in your customer account." account_url={url path="/account"}}

+

{intl l="See you soon at %store" url={navigate to='index'} store={config key="store_name"}}

+

{intl l="The %store team." store={config key="store_name"}}

+{/loop} +{/block} diff --git a/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt new file mode 100644 index 00000000..2ae098dc --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt @@ -0,0 +1,11 @@ +{default_translation_domain domain='mondialrelay.email.default'} +{default_locale locale={$locale}} +{loop type="order" name="order" id=$order_id} +{loop type="customer" name="customer.order" current=false id=$CUSTOMER backend_context="1"} +{intl l="Dear %first %last" last=$LASTNAME first=$FIRSTNAME},
+{/loop} +{intl l="Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis" order_ref=$REF tracking_ref=$DELIVERY_REF}
+{intl l="Details about this order are available in your customer account: %account_url." account_url={url path="/account"}}
+{intl l="See you soon at %store at the following address: %url" url={navigate to='index'} store={config key="store_name"}}
+{intl l="The %store team." store={config key="store_name"}} +{/loop} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html new file mode 100644 index 00000000..f5e5cd61 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html @@ -0,0 +1,26 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {if count($OPENINGS) > 0} +
+

{intl l="Pickup relay opening hours:" d="mondialrelay.email.default"}

+ + {foreach $OPENINGS as $opening} + + + {if $opening.opening_time_1} + + {else} + + {/if} + {if $opening.opening_time_2} + + {else} + + {/if} + + {/foreach} +
{$opening.day}{$opening.opening_time_1} - {$opening.closing_time_1} {$opening.opening_time_2} - {$opening.closing_time_2} 
+
+ {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html new file mode 100644 index 00000000..883169ed --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html @@ -0,0 +1,8 @@ +{strip} +{loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} +{if count($OPENINGS) > 0}{foreach $OPENINGS as $opening} +{intl l="Pickup relay opening hours:" d="mondialrelay.email.default"} +{$opening.day}: {if $opening.opening_time_1}{$opening.opening_time_1} - {$opening.closing_time_1}{/if} {if $opening.opening_time_2}{$opening.opening_time_2} - {$opening.closing_time_2}{/if} +{/foreach}{/if} +{/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..c5752c23 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,13 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.email.default"}
+ {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + html=$html_mode + } + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css new file mode 100644 index 00000000..bca5a3a0 --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css @@ -0,0 +1,66 @@ +.location-form { + margin-bottom: 20px; +} + +.location-form button { + padding: 6px 12px !important; +} + +#relay_info { + height: 450px; + overflow-y: scroll; + border: 1px solid #ccc; +} + +#relay_info table { + margin: 0; + width: 100%; +} + +#relay_info table.pickup-points > tbody > tr > td { + border-bottom: 1px solid #ccc; + margin: 0; + padding: 10px; + cursor: pointer; +} +#relay_info table.pickup-points > tbody > tr:hover { + background-color: #f5f5f5; +} + +#relay_info table.pickup-points > tbody > tr > td .name { + font-weight: bold; +} + +#relay_info table.pickup-points > tbody > tr > td .name .numero { + display: inline-block; + border-radius: 2px; + background-color:#e64b62; + color: #fff; + padding: 0 5px; + margin-right: 5px; +} + +#relay_info table.opening-hours { + width: 100%; +} + +#relay_info table.opening-hours tr td { + font-size: 90%; + padding: 3px; +} +#relay_info table.opening-hours tr:nth-child(even) { + background-color:#f5f5f5; +} + +#mondial-relay-pickup { + display: none; +} + +.pickup-home-separator { + margin-top: 20px; + border-top: 1px solid #eee; + padding-top: 30px; + margin-left: -30px; + margin-right: -30px; +} + diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png new file mode 100644 index 0000000000000000000000000000000000000000..c1685e2e25993d08dab3f27fb12c5eafed21f294 GIT binary patch literal 2610 zcmb7GdpOhkA74pFokTdwPIcB?(hs{|Y?3zH7^b=A(&cRPjoIZp+b~YatrQ_qB6Pv; z=Ta2yL{b)!E|N~E)Y#V#8cPDFDMGP!2p40R_BFeo$%iNYY!7zZ?wjKz>qDA?x* zu2qwUZ6f>97@xJYD`$9wTrMFak+HF{h*&HFl!hbGBoax-fx$RvEgWQVVmU|QAeLEv zVW0sro|G?<^Fc98$H?J=(Q;?F*3-X35J`Ob;SqA#S8}oJbF#E)Ln=5DBpQK2N#OL=?p)|KxT2I0zg|u z21h6ZJ{_=FNY9Ye3Sh}k#kw&899bIvBG@6d4;xQx!8cU;)a5M~w_!Y|(%j6s} z573F~u>60pxbI@gu2O&_2c`ZXDE!h*>59#)kdh2}5c< zLF&5fo38t^rEO*1^y?kcF23GEK&&mARC~wZ5qh2w$ZQKHjpDDkJDM*L`qRx4uZ>nW zH}x%d5asyOEh(luU^a(*C_5S4w!+`@LMowVCP_3p)9%C2vhGmGsrvSvLiO@9coGI#X&lAsPMq<7oY8O@JA^nz`Z%jPAV6yEvyw?_k8pH122 z@3lj9ndk+v*$~gQM>|PdUT;=b@sUHJ7NZ4ldP}!*+0(`wSLnYwv;{iM+dkVfBqV$M zMzrX{leHyA(}G014Waq5=N}Jd44dy3uyQDVX}j)wMd{V`r5#CcuwT+eWlP!uFci$+~!(IldUXUa6vVyxGE-TC${28~9IxAFmz4FGnUQu5&QXNkj zRcuaWQ&&H5k%^s++-y!c`EfUNU4518WK9sxsi=8+NB~W-j}$wVyHk_=2(clXN zE!N1|IP*2WeD6fw)q*D$6Zi8v=|iFK_Da z?(T*poEwBnP>T_*KO_~I3Z9RLNtAu3R>#May$%p=nn*A9x4zAZQJ(rZ);o9yZj}tT zP7Ol1xcov8-iA~M9;?ezg)U!Hc$oig<-W=`=+2@2R>=>V(-)FWT?a}~PD|$BC~uQ0 zmCBvDWiNXk2EW-4)XdFaFc2RoDW$eE)`xst{hV1HWOeIuSJ(FTc82YW6-ldMyBn_D zHjWQd{5Vv1kxv^ge-YlY^^!}Z#@`&7dhB4rj4a2?2UKAFn*SxvHp<_-SD(dVu>%6| zF-vHKy!p`g@9yg9Hy(O7UCgc@VeQApWQ#1N;OxU} z+c~RKg__;!6$ZO6*}D&6uvk_@PmixbT5IP|k($Gzdpj64*TmvCj?1Jn+3@q>R`$Ae zMYzRwSVThFkjI6qCS07l2xf5Fig{eni>RomfcTizg2?vL#i|Z{&G9p%pk}`J8}Hx* zjjRLNd-{MRLa}k_B_dAJA=+lx7GgDUx33Sh_gbnr@@j=o-dUURMI~N~cNGZj(No+r zh^8ACz>R5V#{bxJwq`JS)xl@&8p?S~JIk>$tImZJ^x@;x`n4mGXH%F~Wet78*NYtO z7o;s2(+syfra-BLLVIYyqyM50tm`Ph?7W^D>CtT4`IP%RVjlA~P&avJea(VQy^Me~ zPe|xJxbdHpOOE{z|9nJk#x6ybjpbDAc}em9sTzkpl@x08usQZac30f(bffl_Ws{i= zDCqq5@#Z;H$W*r5wG!deJwP0xI4^Pc74}GUUX^>(D}w+jtH-G=rO^73I<^{aT8HT! zZW&h!(~eIDZM^sgl{(Dc*k6!!u&~VCz07#7KDI)?pem}y1_8TuQB~-6EQ<>b)Tm#o z+lof57hxpDCpI&4%0WcQRB!QE#I&b5%kSyFXs6djm6^$yAfxG<#*CAi=sv=d_$Xjf zwsvOo}2? z7YHWG;#zI6Sf&gm64d*P#^mHk$Ciy-Izplb0k0#uCxo~LmFh@yT}QBS)I|3EJp0qx zHksz8DQE20ow;Z5>h=12=T2=>!pg)pa}qDJCY-V3O&JO5LrJ4U?I@GBB9(Go%yXH22B)_)^pE zr;~-pe0_YbN374u5Ahqi*KU%mqBoRX&%Kk8!`TJqk_Wgc9~(4AiuxDX5Isohj&4z0 SEwobi7ssS~(`u-{CjSLCmRqF& literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png new file mode 100644 index 0000000000000000000000000000000000000000..49ff59064e6a02b5b6eb95abbd18751d020c27e7 GIT binary patch literal 1397 zcmV-*1&aEKP)R7l5_mS2cmcNND!=iI+@cW2$Cwj~5vsy0Zm6g1M87Ar+s zL8K1`AAArCMJs|JZJ-6QS|3aw3T^XXg{BX|Kj5F*(qOmN7eg_uEp0_DSVQ`dn3yzi zXLo1j&fNPu$A>$!JF}VH)&mzV7tZ~jf8XypQkDbmx#uuv&;ExjOL2DuP#QD9nKlKX zdEA@l16#cPg8)N^t~c*<03ROzx( zTGWHuoqA5;6R9l5aIHXfKKR-5HI)i7CnP}dU4W+mMWA%JITOCN5b?l!wZ1km2~gjj z%f~*~(ytsyN7JmU{2v= zX}W6Ioh{w>=r!>R`;>zn$8c%^(WV#zP=l`-K_I=Wki!R(_|p$w4u}3-dp8r}5h!C& zoiQ|0IV{DbkL-Gv zyFMoUY)kK5H;9@DM@4aLZG(9K_2jpG25HYXpfb(Tfy3Q}e!Z;}b>lx9P(e$>Zb|i~ zYm`scqaem$L=k%)zMt!kJ;vTgze{rC5L~`a zl>@O5jrg<~zr+#J$|z60(R>Iti)vy(AuN78k)_IUo#>;^5E>j7CMRo5QV)U4hmX*E z`A?fAo@EXm3Cs(7Mj`D8I7aR7Bu$cMXwlkLFJ&Y*J*TVF)Z13lCVhIwyP?t2=qj~v z2isLHT|xRzdAjloNy9~-nW2HFLiCTyPIruR5&yqAcp`8q`00zm&&Q3v`b^?GSSlnJ z0vAr#{%R&L+5jKe3_KI~>(F1l9OxvVzEvf^s)q{RH#ph1=Mn**WLYq@C@5Fn;^KV| zQT_7_l4nx_AfUCw$-XUXGwES+t?G;jL!soa^lbTD&EHZ%eKJcGyw|6G_uPnsGU;o% zApfd-<@JHT-V!o{YBxZ4uoUz{;J?pz!_lHC>-3bUB6&ImHs(+&aH40&*Ntx608M7- zvuNQ4)tplNu4}(MQ~651B?8l-ZR>w7=$XpjTJG6Pg_0W#Mu5I!Nyp9!a3#=vX5GG@ z3O?$k?=mc;z|Yq0sVjlCqzP%9o$Utb0v2G{R$4Fj><=&X?1=?MLi2;GEI?=rx-#$= zf8Vp^w$chvHtTXT!yVTXm2b9Wm_qU7YWUHa%1^Z#5{K>8h#}f=E*haxO+p_0tWQSNKUM{NU}Ozf&})#eily!}b$ndOb;V zwcVNvU!GI%1PmC?3(0Gx|NXJm@Qs#Gk2XT6A?#K3*Bf^9H(mSff>MM=hsPO?`^T;& z?Hb&>5b@DOyxZKMgGHq{(X|slU9)e0NRdR44@bl=_U!oMtKmp4aAMx*vOHEgXx5M4Jng4&BTnCayy)W)=>N!3QEF{R|zT;~2= z&UemU%ZD>FnMr1*ZaDB=4*R$N>+;`A`u&nS@7&4BlW&t{DejH{O0x`bmM#UMdEA@l z|6cLsKL{{z=y>yaNFbI4NEE<&j``d<5P+yHXKE@HWJpMW;H!X_07anha6=}1X(Zx%7ixXEGzn0DGMD#n zYw10k68Y?gSgwtQQ2{$2c;iTEW6$+$--~@e7DJi|8lYYdDvNX2%2K9-^SMIlgZ^;mxNqqDD7sHOzwRbWho`W(E)n$rC zDu<0R>8^Fr@2*z1OgdF0B9UsWO@ZiKeTk@Qq#CP;j2nZEvE2Iowb8ED>6B65n8}XM59yAM(TgBi zbik!R0ja>=9h2VDl6z-dh=N5n(j$rj^!iQ}h(_8n`tWziw|p2MRGh!>LFyAHku+iSyI-N$ zwiSTtty7FY@Dsv?39XWt_rz>jAImjwR{q~ih#Ue<{+CD;1BR7Nu@IS=X_1T9f%3@f zND_lP-tCcpVl&0ItxWFzEf>E15XpNt(7tOsUX~I>D1^}uB(kw`To>h0moXX~MsP=x z*u(fF7w_A};OMa?Z|-15cJuWBl!snraP;4Va~DWI@*yP8a5IlYXbWqt*>^?YJhit( zc9A1_w(#8@wB2st+BArFdT4tHi6X?E(70Adm!|EqkT&w^8gGWiOCw;;Iep*4pBkkSZj9<_H0ZqwS%o_Z3dxG^5?oX zcBonA1!D%GV2 zLgbDuJ50?Pnv3gl2;)R)8=p=;6|z{%hC9hLu);esf(e zC|vP+qVk0cbC5!@douj+MCFHCO%sR9qY*zv;+6&|r>kHI3Ctq7c-*se*$6TxZ- zsbJ$q_eYcA8L_8$~l(lr+^DE*~+L09Bf)?PIxc*O2;D zz<@zpNM7#yzkWO!zSw@ZKUNKC$Kc+Pi1#Jp zoyJMaQKi`5vHicEwr{RcBoX9Y5%JSq+xOGS@JKG?{tmDe2Vn=+#liz?BftM*?FK=h zKdiL(&V=72LVkN8-}?QG?|pPS?2Uy)n+dbOD3tb&V`84A49wXO3!BpBCU~hd={lki v3B(TBzzJ<-Xv*m4LR*_UD_Nyj=GXrK?ynlV_5rE}00000NkvXXu0mjfUD6Gr literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e84978b8437212e77b6e20666eb46c36a6d00d GIT binary patch literal 1507 zcmV<91swW`P)Z+k!mx(>Ib!X1TT!12DziM~Z$ zsNAWV3hzi|Hiqj3%8S9zU#uuqkfx9T!FK>20~CS2!!4Qcg_(%2U#axuz$8F*TP|<^ zSVQmHo5&|_h~?&3m=&t#kRZySkp#e>WV|~*V z!)|Zro`g;)>$l3M4eH0)65CB)c z_AtX2UqOq84$XLLEc1I}x$#`-|ICEQAyDUk%tbL^TG<;5k(rqmxp);AyznxT#1IVJ zkvK-ujQ(?{MwHkHwHQzcvo|F&S30hn@~9IU4GuH7BT4LGd4;9>4>CM;y5^=?{j35@ z`@c=^Psc|T_YLwpcqA|-?6O+5E#Nw8Z_Mo?NAhfwN%ghT$dDr6qOV_rL)Yo(c-ppv zw057aaW2%oGy+DQb3&&wug|!+g7lpJnbI#MbuIct4-GsOqL)iM(=skZ{Qu(MiNIp; zGna#3jO+gD6ARzLQX#n%xOArSXEUjF8-s`~-BC6vMn1UXnZS!fe|9O*N7r$ma zDR|G|SkHd@zAXA&Cj^P6nsgq2itaOiCM>NWNsNbp77hBxPICFLf5)yYBUy^OX$2hX z*@9jz2ivx_8H7T~pYGbig^ItWpss46)u#H_Yfx1+OT8X1-sw`EyMPZ%T*Pug{!#jg z=Li0LL&yxuodDgzQqW6*|2*CahYGE8D{)kJ8Ikcnq6o=ry#cAf(XJh78=bfY+U%iE zDhoF#n@aJ!j{V|n=_hg_a>phzb+lwSST5+<(oZdP?a4yP4F)4X-!`P{%YoITHf7yA+X>JGEWmJDY5cKkPd(YS@6RX_>I<%s0AX6t z69a$Z4_#ZBRvH2N^|;*daNF@j=^I2JrcgY(5*|KV`te3x#9?bRVu;q9#Y3&|h}Cxt zH-Xu7l<`)T_mSnw??m ziZKSLQg3Y^$c4`~)ms4rhEqavvhOc_cO~4@5USBc2o;3givDWN4*j}gznM{rQ1{_= z57+a@jv?(B+&vTVwnV&BchbSEQXK8r(I2nceQ!`C5#)^#@e^G;^1YStNG|05I$+x_ z!Vc_?g>USNeE(AA20@@dtxO$mho2-u{^>%#^7FPIerz=yj)g?)4YR)~l=ix7VxFZ8 z&AA~K_NH|=d2V3RbwnW&h#j(_6Q-1A%joCAl-4{Oumf4v<-cP%>L(lN$e#cJ002ov JPDHLkV1lex+3)}W literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png new file mode 100644 index 0000000000000000000000000000000000000000..db39e5235ccb9d1a09c9a09688b1a2342b1e2cc2 GIT binary patch literal 1603 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 R%Dw;q002ovPDHLkV1n^a5Sah~ literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1b5363129e48dc9739d9b486f6def929d602f1 GIT binary patch literal 1584 zcmV-02G9A4P)k7R7l5-mRpEjXBEePYwg>)%#4$XgM?6qstqERgc=+BP^v9b zBU1X%c)7&*SDn8>2mkohq!d<-(*>eyCZ;7Ed!j@OF^g} z_v-n-SG;yZfSyCktM5&LSe77B0Bbwu{Wuaq6Nmt_jpN%Ks6g&;V=CO)Pz*TJaXH(u zD2LLWvZ?T{R7PVM7bva-zjURfP(hkP0tDXzyb34+9fun;;nO1#U-?g|=ei~V%3Evl zjt|!LG*{h(oE0*bm1w+vDHwQ1;F_hEocNR>cs25`5kW0_mL%IkYQ@-+TXbIB>c2Rwl%KC{G+h=O<$Mz@k&cDv5Wx;)|^fP2h_ye6b~odphToyE8d(S5ptPjCKUciU3yw z1*8CbTTFUeUG80QAqp1RLQZnS1lcV&Az4~M2QCyLyLmU+zCB2mqUO?d_;5o%Gpsbq z)fHI{RM3uLyHkDl_DJ7TmH{0ZlI`F58sk5Bkg>xD(eW|7D3K_}T5THpZ)5vIUuEpb zm(lStq%5^SxGt8xJ7T%MaDptCRdh`~#eiXDS1d$kX4%RwIA>6urNm$MZJz+ixM;w}wAf5!63A7$vu*0b=chAj$2Bg4G7wr2pf%&AW)*w6E3g`kB zpf{}4pUUm&Cv*GWh$5kS!MYV73=4X;>reb4x5;6p9-z~=Ls%K;M%NRCFI||u6dI4r zh6gVeex_cTIIOKk4AG)T>}DdP72TuH)ywJsUn( z7fL`3LJ46^(O)gv(OkCa_HhVF$)y;p^KXzkj-PgCNiuR)&r(gr6ir?V}Aj z`11un_UL>#77K}16J}>cDeX`JRf`h3?UcSIo)h#j(?6NZ%LoYAQX iLt5#q%NAl8tp5QG77A43l$lHb0000er6_<#Hb-iXrgJOrY&})S6WMv zRuSn%QxOrhUet<31QVf960L|;C>V30LgPiW3RP>g(Z;kO#%f4g+KM(8NldKyYo;@q znQy+|bM{(ZoS8``nMqx+;jjQDFnc5>HL-lRG{OqB@^y!C6Br2)OGD6tCQcYRmP?r!zl$st7Zs52|i;)f$YwPY~Pe7w``k;ThEr>&V^(SlzC8H zf;3V%tWU^xt_n}AQO2g6B8W&(O|&A20)ncDss`0WRb|o`tWV^QhgXIlr-H|-pfJZp zmIDlZ$38P0zO+7(kIXtnqLO;AFFxB|Gz8x5;jLMGwvErWC5@I%JLOHeZ2e?Yx3-OL zfOH|jt4IS25a}pHg7;zj#3;wj`s)PkY2w59UXx(LI{+{PoXoj z($~OU4gJFJ+qSO+t){AC?v-PqJtKa&rte)H^!@E35=Mq(^pUSo8@mx76pTN(gYwiF z2+GL)pC;dO171cX2~0fneagcxYmqj2S0ZC;6S?kG;s4Hs;1B^xuIQ&2Fsy7!gkWZt zHfri+r2oomt|09-o6^UID^)5iDoo~(RZh^{@B1z)P)e| zTB=J34Gtr?BWdDsa*BxucQSbOXvIx;h!GtfCJYZzyY*&*sAPKnRL10K& zY1O$4#L=bHK%l#*>_!c#<(E=&N9r}Ye?ClnW1Qy4Z)eS}9ptyX5AXDlAVi0b)7Hg2 zk;Q@Iul%=qD~j zKbKVcx*&7O;sUWu$j?X4pD6wLn=`q$3x*IDDindTB-yy06%TwC-0>J`J+Y78UtYi) zb6sn-zD(&13o4(O$Euw|vqAU2fRvmHBdrsSU)sH<9>Zc)B|7Rs`! z60nOil>a@8x7tXvfq~ToIbQgYm-_xvUC0fJYXQ20WuWIH7x%T}?uJ%(D@j1|Yyk{_ zG^zHI1k7+C6WHIey)C1iR6v(k=u3@-8x&2Y@!Pij@?_yhYC>?wt}+wz2E!e%s?(E& zzj~l!&oq>pL4OX=mu=}hc~W39(tf;UJ2JuN9LKWu!GH|-dCPt{8JS7vBx3HDT?^0! zEW%(|ssE{C2cPNK4@MM;)d5#Ugg7kdk-k6u$BrEsR_YOYbK?*%Pjsp0iNY5i%s~c? zT~qPfCksDZuZB2Y*^LCktTVoQIzDRE8H3BfY+1m0$97#Ro(fh%%mkY>I^Ug&UoM;r z0m7U~n!j&`6n-=vzj<`v#~PKj=u@#XUTHD(3K5~>aBEGtr>Q<2F<>wxq%ZdTU*DUG z_t%9I5QA7kT&3u*W^MPc+xD9gr4cI~p09BJ{;2YRt~dwSu5==ZDK9Y7?`sz5jJH44lndgI*up=fy5ynIB`g6P8+?N iFr*dF`dou7^YK4r$|^-f<~CIT0000| literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png new file mode 100644 index 0000000000000000000000000000000000000000..805dfbe53e71af1864beb13101bcc609f3893d62 GIT binary patch literal 1616 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 KMNUMnLSTY6B?t2W literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png new file mode 100644 index 0000000000000000000000000000000000000000..f28b99492199a759a05d13870552e6d01f417742 GIT binary patch literal 1600 zcmV-G2EX}-+ZYoHH|-Nm3*P9ja!Kq^+8c6v0cS zN)@E^!PEyIqk8x0VlkZYP; zp?b`!=l{0o>H`6~22HDeHv}SC2Jr#3ZKy5A5eqH`52&sk-}-)$)*_l>6VEhp3p!@7ppO2n2qM2-BJwmp1swtR3h(5VSdS3qse3>9cN zIGU@QQS`Q&+xF0w=s(*WqqBx$lmg-XOrj^x$_qllcumUqM!nkz#fl@DvSux1NDVv%H4DLNA3^>I;xL3;BIB)fN2frNk;k&eL^ z>+bG;N4@N=$Tef(awU8wb33sQg30ebKzaHd+}0sB-+wR3 zt`Pw8W3O`M!AFn~TvvqmM>4uClI!0p?9Ej027#*oJt>L;{f?1H@T#h=o{5!#&WV#q z9D#wgavFDho@CbuQ$ISumHodZ8@-9zt+$}9wx~Gj!r+Hv87>TStNQ5HSTq<6V1~qz zh3Ofl?%hZCl~YyURKbk+1KR=U96w3^!f^nSog)wwM9d5H2}4@>^=p=N6>7UD?Rth} z>B^CJxWDXJ(c2e!UHBKoZkE{Wk6A zkCE)$L3!a4`Lp9lEwf0C$zW&R4R$fA_UrPtiLUaaiI7eNCeD=h+{Y5Rs|||adoCd} z#Cx{x--{dCMCZio%>4Qgy3oXu#8NR{?b>rwf!R%tG_0&PyQYT@tgUdgt^fK&>hEfX zAil3b^RcIBJ@Y)_@(hy1ShwKv4}OkyyM#-V5JgCmU}~;(aI~#sZe<*F-PNWL>W=K` zmX4h-c`X5F&S{vPr+nuEED^(u^85rkbp@%{kT^!oG;_%5!p2|j*vmB`RVX$BGy_e* zO$4qy)(i*huIjBszS=S(E0jwUh-0ej*s9hF9BJv{d8HXuK&vw}w-zN7iiV^9@239s zY+>V>;LXr$#KbCrVW64d&KCB{SWBO*J2HjNBA~5X(xpGgz;vMb=)69VR6`*f$p-}z z;7{}V$aG*XUfiyWuXH0o6VL$Nen;)UEq&_Ami}hIA)#_`jRgq(f*bGH<4?47tlv=! zkXP5`a)#?(PZY~lqMJbd;hFHWvxU7_TN&b>YDC}{jLCzu;eb{?x~sr+UBD&9c6}@s z3tB=*1f5n|`)9(p3*%i6eo-VX^_xBizncv|J=L{0>Xo$UP_Z*yEirlkom8srmQ46c z!`W;=fo`7=AIt6aU(AGW)Pxccg-}A+>~Mcy(1ZVI>OTh@^-%5Mr3{z)$A%?sD%>;R z`Cu&8tTbq6&{03q)FXeG)9-9@NG!-!PxN?85C3W=9LR*s-UDo1A#A|rNchQ+xBI3_ zQwRcizoYNaeE4H5WM8h!_x>_(haQ~^haw?%mBP$dl~UhRCT3|uSB>qFFp>xuywp)? y8REbTLLowjFp3BLeg$|VN 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 Qr~m)}07*qoM6N<$f*CJHz5oCK literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png new file mode 100644 index 0000000000000000000000000000000000000000..606c4a6fcd5a83003717f4b5e787199eb76382d3 GIT binary patch literal 1101 zcmV-T1hV^yP)XJ+?)Fw{!2^%}qP7usb{R|DQSMKj$2=)^Z6$+yh`PW@FGXlW%|k+7TGQ=FGS4lGe}W z39SVY=3aQ6X!k?oK@BnZpFa-2F@KeAf@Gfwsg)}kHh~0r!kU9vZ5F(`_QYC>1Hj9`xFZx2W7}Pt9YbpcYYo;80-pmr9Z2j6#utqR3c%CAEx>)iBG!uM zZg8>55{GrJ`3TsFNQ72`)&W{+w@(lew9;rDAR<5n>;~S-Q=VF7ZVVVkXxOMxFmqKg z|IT6N7n}fqIL1^LFmqLiV?m_gys!tj+cP}ZrKvy^uon@C6RkH5QrUew!BtnX{L3`; z$tj3qWL<^cd+(qyw3XWXM~P=r5o z8=-g4JtT8g`W_#pZ|p(J!@E%Z>mf-%B*on2u8#3VmPa@QXcA*orAO+=zT&UZ1N{BS zK^kYyQM_S0s$8P>_5}aEc7*iKwP6eZSGUdO60U11Pz0M8Z2dfi8@Cf~-OTcjCqab9 zsk19FZ7RIu?Xqr!>B4$*p;FkzI_ipz421P(;{4QhVSEgX0MfkdO@|2*Xb{0JN0|B&qIFt|(x4vAs+U=r zCS5QI`~WBk0wZCFgyBkZ4}+F^Ct;Y9B`$u)f$!XVS3>KRm{(nVtV`+_p6sHX%Kwc# ze3j$Q)YA8Wublx&m+m2r-M7GmhqER^-`b}^j&+_-OI=` zB6j}{0iUf!Tq?7VR2@%(k^m*gQSy+RQz!{hau_AgyYHl9Z?{I+o?pf;F0E+9n08?V zz$ZWta1eOK^)J~9PE0$7*9f~2{WOiKEOK8RG% zLo$J>Fr+Y$Pb!u{S(;sl!iPlaA&RJ|jDl=@2`^AYZ(%`G!E23oT>%f*Ii#@x ztSw8I0*iqsfwjO=;3fzD2han22=q-MO)bQU`=D{8X@ru^Ao(1U%Nne;Kmm9O*yet# zw|@Zl0v*6E;7wqkBNS4rm6BH9Lsdc5qS^+01FUc$iDww!Gzw&a7l8YK^}sNy;>ite zZ>pI?oiv{UD-ekYj1UANfeBokU_=OlfFKAlB0vPJ1Kz9UJadh?ZeR^UtWlh`#j9fb zi`apo2`Ag361KmH{qG7o8VMprHQh0bJg$Fv&IAQqPW5m6ENG>Zbp>E(vJxR;^atE*sBiNAk-(Mgt?`ax%;*g{nE?e z2VY_u3#3;DXxjV)4Qp3ZeC-g)nSYU7#xIWp^;}wBc^Xhe0*xXKZ(mI7ffq6P9D|2@ z$Shd|sx)uuWcJgY3?DsCdf_tRtqUMZ6cKSrpQ*sDN%$vl77>UOZR&iKu&o76EiEr^ zXV$h&go_u_yy0;)iYTn=;O2vS$+q8#j*clt0Dc3`Ro*CJ6~X`*0#0J>Mk(ZV;N4Fc zeE$nD& z2jF$DuvZ(2!}=IFdM!oF3}gb>1DtdwORKC2f%Cw#^*XtFgzDBLK$knnfd{Cb%+GlL z>x~ln(*EVnW#lE1xc~M5U(du`rfMH)radV}LX4ci$R;;uFp|N@0gUW*@9DJIdX2D- zj-kUN;~ufL(ikD|InV&?2HtZ0OLYgQwi3f@gx!cv^21} e-AF@zV(NdN=d92)b(p{a0000<^ zr%tE}BII9rk5d0hB-;R16N3hby?r^L1DF8LdEmh%&R9#^tIra4UOQ!f#tEbI{}KIt z2FW#owFz}Gun>3bA(;lGA#JeM0$JcC z;7Rwb-u(eA2fBb>;4NUg0~BJbm6TS$Lsdc5qS^s`3#@QPB2O^BXcR~TF95d#4*;X6 zibprNyQwA)b<}(TtU#nhV1ytD2~6PjiJJ=uOo)g8C14HkVJ+pE%gprvs}Ux(G?}*f zA+ZB_?9fQrA64woFm@o1%@@$pq#%-ZEIbU{>p5PN(nKHzcoY$c;vnekAh+f&!g<#- z@!N5V-~9lA(6nwX>7|RXg9S$S9wa(_7D=bYJ*^&KZ#_zrdszZ3!w7b4OtN=&kzKtK zX~{9C=Mi%2?g3S@-7CQe+3r=eZQF!oGGMK7Lb<~|9qWs%7T{taAhy=z8l|}RApdUc z<-%iIm^^iwOxH5BIL5#;uQ9OsO~!vYf@y65BRHV|v;hk$?A8Qqo>HI)8e6nDPWslR zq;8zg#L?r};Uei?Ga*a-&T{)pxc_tUy*BO1pH@7zPF{}j@gQ5O=A0cR>RN;SX$7y%Ap z?Rv>(wD7@BhCluaj3Xq9u=xTP9)BJ)rv)7w#|{>dOarJ|$K3ZGMpQerO}8(B^?=yI z$aLD$a>|iZ2-Xr`xQGNM3HEpo{p)J^vRb4`7VHC#07k;lN-Bk;ryw-*o}iOEK@dfUYj6PxoY{Kc1HV`?c(w8gwR}eg+(N4#ah;hve>l0(N_L zW(DYbyV)}~n*wONm;JdCK~?u+cr_z%!^G%};p$^=biqYX5TYvgA1txqn-MZ)PJdQ?-sXGkT1X5F>pU z+2H03Mp78rfsvQpIG(Y$ULmaG6X@tzStHg~3L^w|0gb>G;2l@LR9A3pD{Xj%uxq7X y`^$Ap7}To5jhDsM1Ji01V8d-UBaNA700001 literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6a52d3df1e6c0b3fb7775a3b9b0d2de733b76128 GIT binary patch literal 1156 zcmV-~1bh35P)n{(sGyf7UEfRW725>j3sb48xj{#tsM&I06f3gYhaWng2Vt zLsbxA?A5o4Mn;ib2CP;94Ul+td7uj@0e^Yq!8~WIrSr8H2$x>?V#m&63lrjY83T_4>pjOChO{CO13ZNY#7Ph=?IOSKPQojfQ2KR*>7ik; zipB{+M;qk39EaCH@KL&CN>1&W}FMW>6TZ@PihHOnadatw_k+Me9N z%y$Qgj*K9=Z25de{B(6mGs4Qk>A8i*pi|SBD;Co^_#DyE;}qWAMego3WV%-pEV+#A zU2BkBmexn^N8{MXFEmqWg>V#5L;{T>4X<0y;vHKt*$k6=h6t~{3KC24&|yp_L(s9P z4A$8JH7c!4{097i$TDVQZQbyIgk6`CjE&Q|{TZUslbqSSmEyor?3pn- zp5H|N!FwpYw;R)zS5N_t0jH~9lzM~#FbN#M+CIr;webFKCO+H)#sy?HMp7vxlg6~R zF!l9*ruTi1X>SFq7R3PHdK_`%)ON0Y0`vhg@3L$8!b=!H;vR*`DX`zb+yq*Az~A;2(j$bB~@RPTv-%O!MmN&Q@}P58e2 z-)V$z8icdr=`P?0=Rne=daw@fC*U&=XF-I%w=a2M3n_pGz1N=$A+*luAn>}E*z2{} zVSNOAbH0d}1%wG;8*sp>I;pcJ1pWkGY*xuNBUHC01~$5j9C(20g?Y0#uNO<`hxT`O zFC)*1*v)MNzFdg7Ox-%t)bs=+Ax4HV@`M{R7)fDd2S#3T|4EH)vqD&lC3I@0tPyLg zg%JXu0xiG*@TRL@>MJ<0)fiqO>{@hW1Uo(nVbG`wH{L6*9+}pw05dn=h_qzqhW-bA W$dyH|1TPr?0000 zFA_yD1(6Rz^9^q=bXKI zxckhUxpS{Gy5Yb%`|Q2`Yya1Ot-VB5xribD0dNSbiC`??#jhf2nyLG=MtM6ed@Th$bvS2YXD2^oGBJe<=|(O4}3y=_8*q* z+fDYGtB_mDzlCcAA<_!ICOA}g4RwBxSZCFof~d~S>- z&upiD;z!1I57V{%K};c!*6WPz8D{F#X(X3bUlLCOXPR%6R)7{L0mpD|K=L^qf9)M6 z_I?1y6B0$Zu?fy@9mEt0#N#EjR7UbSP<5WUPg5At`4T@F?*RjVxbf1=wbe*+B(P|; zMpUXI)+WV1xiJ6^w7M@_m9}KTAz%bB5(G}d5DCLZaSy$p)*_h@tR!HukKa+?YyUnk zpr)>vSA0QNU({!wnL?kgC5ilBZD-%Kp)>LHE#UL!de~+pvHJ?xpR%(cz_hndq>L@3 z0UAo({#*#4^P9c^UPu-8RwMGZ-Ubezj}fx~ngDhJ$GocJ7Hb0FcVKY7PHsLx^=l&F z0iVb=Wl&QzKa~2f7YmrC_7|U*^^_Bl|F;wPXd&V798Ymq{3dg^~EQK7*GW$*a_0000luRfpNJ6AS z2%)J$lm41nGW~OE zhpHgL@H0CpAMZojGvKreXn-V`mjm)Z3HT=^9h_XBHyF5qGh{tIvrcnkP_8foHSGWHv)Ak`5{I)$`lkWAX(oCDf{?ZBh{ zU4!!jxB*xRJPEu2^msxcaat>B<1kbddOVA1T9TeVos(oZ}OqzLX+7hgk3;H;+)B4P4U2IjO{-}GBCva z_jZzA)`eY|XU;Fe)FU9$*j%V6{KnETuo=J)O-eeEK&R0dv7z<0oMvDVcYOck6%Y*Z1YvY^B(bObo&&(gI@ zZ5muLFL`kFN&W0IJ=xcW)vL|$O%pj2KlyFobH9M3MfFfs;VWQYfHNb)aJ5ebU^6Lz zdV<@Z^C5J8(igz@X5IpF*A?}U>k7Mn=ENC#sa5+Ev+iKR)p%u#K1-$ z$WZ{Ofy|Et|Mfx%Luvo;aaj%)5&M7JfDdM3F4M4%G<8pc5sQ%{7}?umULXrR4ZP^Vw4;W%z&6l~P23OB(m nt^t`gssJ-9mLb`;sjmM4$*Q4Q9n3DO00000NkvXXu0mjfFPRj| literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png new file mode 100644 index 0000000000000000000000000000000000000000..72cb21f30d2c6c5e07f4d4aec3f93bc15a17e659 GIT binary patch literal 1157 zcmV;01bX|4P)XXf7B%_gy$)>JEMtM&sWptKe$(uY1s zpn^V#g<2m(!J@uc#E%D!8bv|Wg8E=V@dK^ZY6U|pQly272z}6sG?cb}#;UE9Hk)Mk z?!9w-*x6*Vx!c4JT=wqVng9QM{O8OORpmT}_y@rKpN-Lsnf3+H0v-ik0tP*ykU4D)X?_k>1yzS?FYpDh+JmHlU_#L-Pyn6;ZUpWC#!!_Y z+~9MQCl2+Y*$%8mB*7ZN+6ZebU=R_k6|A+5c`Jw{KtHf;?kb%U$Yx+2LS2)3K_?~} zB8nnRR~b#}Xl1OSLL&`5mdgc+qZHMR-q;~;c-D@vDG&qPhX|yZwTpV`>|aZC*`?He zI>OjzUs70cHQjgJj@A-1se?de=N{@ue-SAa!RcmCc+QYE^Rfcy!w7C-LOO09w8)*B_tA+$gR*pG9Yq@$!~-~5o#w?6^XuutoC zq*&z4t8d{d0C8t4Q`eR@t{kzJ^u$TT8n8CJ)~x^C zm3Lp}mA2-B-N5&NktlK!$4DGEihCS^GzxtSS?2S%5BSc%&q}Dl74wQO=<195)H7A+ z^N!UU?eI;Ta5gP{A2`rj58I4p?!E^WCN%pAf5FaYfLs?KuOM8KcGW3zQ~vk|IalLGhngKPsp4Z{3j@LkWBFbwU_ z{#+)35vl(+0DL|dahcpc(#&`=j6@jOhmpJeoWV$pk*yec*8k6D?47N}&}t1Gn`mfc zdgV|3`j3G!@C5L(?_cs2oViwvpb_>XIW&wrQ-R2~>%vWNi)%opc^zQ!hU<`WX>#g6 XhFFx=z0+1=ST9oID#X#*3{A|(@w=)s4Q zj3B5MVhaQVAs@ob@<9yEC?x5jAbSWRtgMBCm6gE4jg5$U2+i7bb*at5(#HKayL0E> z^Xp;GjCW^eoYeyt=AJpf@Ar4V=X-wVC#uQ~3~>*Dy`DgS)=d2b1n?Yz1+>n5Rg}zp zt$d*>h>&~rZNkBGNOKyjmH`bAC*m?d2T%b1PLO*ulChTT{vG&B7FFcI)N_WL0|N6yd@oEHa>vAbTNgW z2gx7nN2f!)1@p*k>B3u>CI96&6n;E~1cA7twG}wpNYe7YtOV}F2zF{pn(tpn^M?D7 zwhT9K?WVPB6FN0TcK-_mcdS6i^DNl^BB|w_=ybtg48Xna=-8ym>JhF0JYs82rbY5c zzviFKJNft7T@;5$NZ+*zNe6g~783q4MEfhce*}dB_ zO#x#)eR#_j<1bx=X=x%F9%1^2lcl=Wo&{^wX`2T|s&MNP4gr56vW#M+txs+ezheP$ zZj|hv=Lydab9u*W_TV#Jj<4q@8oV^TiR#Y?4H5Tq=s1~{JJi0YTNtK$gJ4M^p%SBkJ8 zDG%|}=#?=dRU`t~=mUNN)`;)hSq3ZBT=4yp1xpFVPN5UP_s*TR zQEAh}6?4#mYlWcvR1?p%|2y^YO&vL77yKbG;1Y-%bPr_}z5{v^ICCOQX8UpiY%UGZ zzQpa%^$=PY^eymuqOjK*k;6I+9J`hxW)3m|>;d|n$>JJoeBdwOrAD1xBSLj+B4D#S z$X)_a6EZ)S_+M|7Fe&Y@JC|W1iOBu82l!$x<}x+=NHgn+G2&z71V)~Aa|RESF>tAX+IJVUoiALCs@Z=zNbOL;@UKef> ox40(Av{nb0Ub`A;X{t>94{#Z*3)#aN+Mje=FwUf2tBA&3|;6T_MQBwL@ zT%j=_!qnRzlN&vagaK$%08~Ki#HE2&U;()3kb5PQ(VC`rUdC@*Rm87YVKnw1(ZA=B zbPBXCNEZXEfv16ofwjO23;q{y1o#a2r-U@tkdN$w7Lh6lC7D1P0whQ(wAMffyaBvq z-;J|>0QUmxfmeX{fj&zp#M+cgT73_V5sc9o(+Ye8Y_K4aV;I*o21o+Cf%||bfLV+Y zM{cltQ_UR4O7kVK0g)V@5U1ftmU+FD6(eGtF> z78Xv8GWXrjm`oPGqm9NVw;`#J*`cH4hDVSf5PP(GfT4Pl7WQQwa5qZO*{p;QtS8)Z zKe8;%@}6$ek3WKH3~BjjH;K+QcumV`*}IFxx;2>j1%*-oo9xliuF3owglhqhSZkF| zskxz_m_7JC@%RL*2KSTfyq$RC7;0G~m!9t>x-drju>r!(8_5lih@?V*CZGejAS~!TR~)Dm zW_AvBa|=y~x(}iVQHslZ`!QM*k53{>Az=eH9V+0c!x7a^ZCBe@KsO-8!(Oz5AihUD zIgJRYRJeEzX^nHx4_3P`s}U9k907)bF7bU`A-^$5!gup8Hfeakao~6BPF*jx8Rv@m z&;ptw=vDC2_fq@suZ6E_$Qj$<&w*d;1mZf?LqUaKfv+8$B@w!_eboV5N&(d8-2Pk- zp|(LMfp?w6UadtI>kHu9Ybm0ZAQQkI;Dj|qvSYBp0#}nB?*-5L&;nAJFbYW zR|uQ=1a%Sp+4V%rkzW@5Kwf<`_>2`bEbI(D}pMQlcOL2DuP)akvS#JtL z`M8(Q|84Qc4+8WZT3)`73B9zF+1&At9r;t&Ux*>i1PxG(0+rz!RTEt#a#GLNa9e?alqj>mopjQ>t)%up^M$uEAs&FT z0;(gLMskPgnDoJ^=qEQQGmB0hfkY6iNQA1QDuXI$1hIlF82#y3?s#B(^n*n3P!fs; zy~t*OQO~hYj7OiFj^#Z~Cyyanb;=8TxrMjdr66SWE=eG5IK{1*9Qg2<9%vbzsPxqp zf4zns*z04`cUSekra@FjI7o`4Q`^XH-%mEP56M!zpAUngAU%f<)bvy1O06jUR{=N5 zLc2zIS4D5RPI*hq2l^Ai`#JF&Zs7XwJ&e|>CE5R+XW@ZIu}ce(#AQIBeTQAK%5EPnei7w-NvOS6xYOuv!z)|;_z4|FZH z2GoSf8xxt%9oL~c>WD#u!^CiB0T4x4bD92Mo+sUZGs#W630JO?Kle|hl7g)rb?``_ zE^N1f_sEnEp>{@nBpAspH!}6mml0K#e|MZ>{uLxm*G*IzjGMO8()Ab{Qd-idZM+o9 zSsJaf^il-flV_NJ-^W>+eVqE;@27U>JFsR8qSdQhK{`(NZ0;A6Qj0#4p@FAD^!MD( zHY|EM6?T?t6};UgyX~#Sdv?)(_8-K%c5D(eo(eKw_}NRrFT~}1T^)1rhQpQ$*~P%c zvxT4BpUS;$#}tV$Bi^%%ZJ+rVxZ`HDjy_H2kEhUj4T7x(oe4bK_mfuwjcrO6)_TFO zsiA^*3{G_HSGQ%+z3vERNUciyi8(sQPoniY)@os|UM=gl)}aV!;c%j3bGjx6+jO)U zgql)0-nO}y3!X~_9moTs2yZM?{C6H-Y$CPlIxqvP2=cGoPoL@enW~T(|t;0?GS}Nt3-fDd?AO(KhwC^qi zmXb206?V22pbJ=l{8ecS%2RZ9_vjoFAHT6QiUYJ^A1;Y)uA%r*sF+1Pd`;)!4dgjBEv zqy5dr@P*vD6fsoKvfk7czTXHBz0mg;YvpRuqwLPGam82%s8Viiw^xLZjHx#Q2K4Jf z@=VvC|JGvoY*i=*e}qs#m{Rl?%Xa9OEqh`@sfBV5uP|JxA6urhWpLj_#GXXFRqmj@ zNu_qIWygNFWMAB-NFvDf5%JNs9eH#yJW>%V{u*GLF2W8>#lly&M}Gg6!VQ8zcU-B@ zHp7n+q4J@ceCel6pFO-3W@91Ia>MKnrP5w=O{`=oeRFok!roNC;mXXftS?4~wpT2fM5tY1~M;zu<_K`aWT z1z##cskETrM?vY6RDIBhRaC?eP(c)tRzwU2m6jwArKHee3redXMlq3MYf+oTB)gm4 z&E7LU?Cg58+0CXMxNz^eGyngYGyikuh;xoh7~&rQy_ki;JWFE-1hAe!0oTA@vr6WE zR(I$eh%oW;dlZL9kW>ijDu4!vV(VIgPM`pskCEFs&ZyGy%F_g^R#x%n?XdLM1xjbm zA+2dpt%NQD)&kps&A>XK-Gl!M^aJ~W(K)1%!feTJsEjm^P?8CxB}BrcK~;ei@FMV( ze|NF-1K0rE4(tWq0QPx8AyQWx()wrUoZy_|Tqkf4==LC`m|)_faX=Dy9=HQ|5Xj=3 z#KH~!Z0d=_`Oth0bR$y48o}BCYph=p`IH@f|GLwGEfc(ec6_QkynnmbbI~)x88)uErIL1|tA>`qa_5$btrh>i~1M#JWP!g&S`cRGA$)gIGi2 zx~s|b4dPTu-FFwJqYVi|3a5TT0_%MK<$ynGa2pc-2AoA?4JCEqhV|0AZ8MaV*|X=F zKG27bPcr%Le%hYcLF?8{L%eUNXJ? zNFpE_`xjI(?MulWIzs-~cStfx^v@WQ2+H6N100TVlom?-%J`ysj@II)Gelz(NMMmL z393jcL^C;}3*%*5IUOpA{#CvEvL0b&LO*cY&ryN^NhIdpnd-_8Bon>{6M01r0Vn-? zQ$iQJV&1CS%0-<9#lAMJ-fx88D5MonKLw6?2cjn3gL=GgfiGh?iz1AB`)mwsF%8hZ z*zM275UO8v9C$5O*z1jw$NCHySSTW95n%%80gif!M|I`|z@NY~%{sYegwD??0gw1Z zwlP2#3-gn)|L#%=*y(TeiW4ROuLt;gG2$|H`$#kIi7*miWC$a>yv<-FfsuDG z@{<3K=B;hk2)ld%mz^nVM735J0niJif#-lXeg9Hl!I9Qt#2R5gia!pQ`cUOz o7I!f+SFb39x88`PTdJo20EyS9{^^O1*Z=?k07*qoM6N<$f^F*>SpWb4 literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bd4f6a0de7b60b24e764ad20f10c4ec8f11470 GIT binary patch literal 1500 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 IM6N<$g5Mzhn*aa+ literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png new file mode 100644 index 0000000000000000000000000000000000000000..7611b81ae14f1da1cc6bbb0b5f8417f5b5c2eb10 GIT binary patch literal 1537 zcmV+c2LAbpP))%q@vkVyQ8$9kp2NCACzrUV>Id zq(W043W|NuD1ubmJcwee7Oa9`&4U&ik>CZYt(OKnT73z{8dJ1I%|jd$Au*Rp#yK-{ z&e`Ye{jKH0K4<34WM=9In{(Lg@B6LwUzcx5p7*%pjsu)IbAc>Nad!kzs%3z)b}0ze z<6b@g_lnoQ5TNhS_UeCAAeI$K6u`QU`M{1u&;%mDY-9U22P)8UxG@!OZzu*lm%ALx zE$Tq&PT5p=T`E&CTqRJP3x4KYNuh!?g#-w`1$Yfm1agNPGvVVC5%*mx^?1)DK>3cE zT=(v}esnsK_g)>#^|3G|U~_?!f9=`KGhI9U$J|fEkY<7gC^v%2XbkIF%3^Rn&`@&F z$Crb>CDZW(Q_%x^GWoO$^}_MKBfe^}*Ay`)|9#gVIoK+{Iv42G1+`VEZ|I=`O@*Vm z>4IT<>$>x6JK|sMRQ9wS!zl$sD=`G11Yb0QKze&a4ooNUTkpRd_Wh^yb|%CFC_|`j zkTg;_?21Vr*dG1(<;tD~r-(ozh_y-(MMY2*0Uf-Td85B8mc3uz7JWYvJX8)vgIr`Y zVAON$?(t~5J+BoE!o>{LXu=nB`QeI;r$K$#JJKZhl&h<>&rrOBivTg z8+IsfX!}b24PZIR>#t+#zE6_8>Xlf#!`%Ka;d7T^09Mex!!@z&*%{03(}n*l6C#HI zNW4x@F<@Moj)lk_0~8S`3UvDQ%I%q$AYs z`V%Bl(i^S^Af4WgWHrX_{2+@vuVVR!PatE>s<{nL4h|ist!o*g>kf7WI>zZx_0niy zaP@V)24-Bk_aQEP?DK@yB8}T_fhZc4)D@)baQ!^CSIqUr9yT-aDKM* zXWx{{T^+~NEYe1u&aeMK{OW6%*nc+y^jVAW5~FB$E)0*!j;xH_Y6iUl&^MKIxH$pl1MSC_>?^6@gNb9)@xg!;_|cMmcRsK< z5PImHZ3T1z3(y}|>c8#S@1E}1cP11G)d5$m0AXCvV?BTBHyxW9SLy-s>bhLGMI6?v5ks`>%pGinhpjrJKLWE&fy0SycOsq$RzgSxn>RY& zSO}jfoQn}_;^_vADSWRL9z4LUC literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png new file mode 100644 index 0000000000000000000000000000000000000000..426ecef5c0adff5df2440e0ac73721acc36e9497 GIT binary patch literal 1522 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 literal 0 HcmV?d00001 diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b0273de2ff9c6e4e1e355071e70915230da8fb05 GIT binary patch literal 1526 zcmV)%uFYV7ebX7Qzu%RDmBF?Zv?4A zEqyR5_#pPhE9AxGL91z1)JiE@^PocGL+}D>z0lB(whtu)OPYX|)`Brjk;IId%s6Mx zoP92Pe{1=$&zYH%%uM}Y!{%du`?uEmueH7)k$OaCFuQrsN@lxi8^j4uVD zdfcn$|6cL+8v+a*I$pgu1!7r+L;@fbD#pb!@g9wtDzY1T+ii9 z&!QYkcgm*1+f$j2;q?N=mEf1IloTpRQ%Hc|TY$%aBG7Z#mkFPliulU4QqT5H0+jEo z$(|3@^^-G+eE8;A-WChf0yZBw|JT0FKHaqwf9d(lF{GKG0m_Y_vR=b_ma-h2k2aJZ z=&x6T-I3|!k?H7x{h540g?i!mz!6`w*lUWI(|e}tj~;84-<%Kh>w?-E)Hn3dfTqH! zp6QZd2kN@>TRY-E?o{@-9K$IEM5|y3KncEV1cCIfh8&qm;`bb02nYXNdM6X&A(RnR zH%J;O9CpQ|4{VQq@djo8l2b$=5yT1+s*0)%RnXzSEEhobp|n9K5Hg2RlYLs?O>NsyBEC z_Qsg>19iQxZ4gx!f(Tv|AVPM>ZDe=u0~Nd|*F#Z|zQacv`q@dPQC8_VV!)&_6IUPED3sRg)BM!kq;RVcK-WTRKtq_m zC6Qf)*?8cVcc-P=m*M4_r z7Jb4U!5xWWtkve)myY6t0paR35Jl>>>S9{cPfLeWU7OXla}o z&F1!0L#Y|`hd|#nq@%+Luo&n(*0!Um;KPYy)A7N86!>}DezX`^PAaoT-q}__7q9?> zNu~a$-2VJjZa|HJRUaOCIMR +
{intl l="Pickup location address" d="mondialrelay.fo.default"}
+
+ {intl l="Pickup location #%number" number=$ID d="mondialrelay.fo.default"} + {$NAME} +
+ {$ADDRESS}
+ {$ZIPCODE} + {$CITY} - {$COUNTRY} +
+
+ + {/loop} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..d6679e9b --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,26 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.fo.default"}
+ {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + } + {if count($OPENINGS) > 0} +
+

{intl l="Pickup location opening hours" d='mondialrelay.fo.default'}

+ + {foreach $OPENINGS as $opening} + + + + + + {/foreach} +
{$opening.day}{if $opening.opening_time_1}{$opening.opening_time_1} - {$opening.closing_time_1}{else} {/if}{if $opening.opening_time_2}{$opening.opening_time_2} - {$opening.closing_time_2}{else} {/if}
+
+ {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html new file mode 100644 index 00000000..a0bd8069 --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html @@ -0,0 +1,347 @@ + + + diff --git a/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html new file mode 100644 index 00000000..badc6e99 --- /dev/null +++ b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html @@ -0,0 +1,30 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {if count($OPENINGS) > 0} +
+

{intl l="Pickup relay opening hours:" d="mondialrelay.pdf.default"}

+ + + + + + {foreach $OPENINGS as $opening} + + + {if $opening.opening_time_1} + + {else} + + {/if} + {if $opening.opening_time_2} + + {else} + + {/if} + + {/foreach} +
{$opening.day}{$opening.opening_time_1} - {$opening.closing_time_1} {$opening.opening_time_2} - {$opening.closing_time_2} 
+
+ {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..e88ff372 --- /dev/null +++ b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,12 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.pdf.default"}
+ {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + } + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/vendor/autoload.php b/local/modules/MondialRelay/vendor/autoload.php new file mode 100644 index 00000000..abc12a10 --- /dev/null +++ b/local/modules/MondialRelay/vendor/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/local/modules/MondialRelay/vendor/composer/LICENSE b/local/modules/MondialRelay/vendor/composer/LICENSE new file mode 100644 index 00000000..f27399a0 --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/local/modules/MondialRelay/vendor/composer/autoload_classmap.php b/local/modules/MondialRelay/vendor/composer/autoload_classmap.php new file mode 100644 index 00000000..7a91153b --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_classmap.php @@ -0,0 +1,9 @@ + array($vendorDir . '/xaviborja/php-mondialrelay-api/src/MondialRelay'), +); diff --git a/local/modules/MondialRelay/vendor/composer/autoload_real.php b/local/modules/MondialRelay/vendor/composer/autoload_real.php new file mode 100644 index 00000000..c0faa38f --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_real.php @@ -0,0 +1,52 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/local/modules/MondialRelay/vendor/composer/autoload_static.php b/local/modules/MondialRelay/vendor/composer/autoload_static.php new file mode 100644 index 00000000..ba624e2a --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_static.php @@ -0,0 +1,31 @@ + + array ( + 'MondialRelay\\' => 13, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'MondialRelay\\' => + array ( + 0 => __DIR__ . '/..' . '/xaviborja/php-mondialrelay-api/src/MondialRelay', + ), + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::$prefixDirsPsr4; + + }, null, ClassLoader::class); + } +} diff --git a/local/modules/MondialRelay/vendor/composer/installed.json b/local/modules/MondialRelay/vendor/composer/installed.json new file mode 100644 index 00000000..4805743d --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/installed.json @@ -0,0 +1,43 @@ +[ + { + "name": "xaviborja/php-mondialrelay-api", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/xaviborja/php-mondialrelay-api.git", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/xaviborja/php-mondialrelay-api/zipball/b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "shasum": "" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "time": "2017-06-21T12:22:06+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-4": { + "MondialRelay\\": "src/MondialRelay/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)" + } +] diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md new file mode 100644 index 00000000..5399f7c4 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md @@ -0,0 +1,5 @@ +PHP Library to Wrap Mondial Relay API + +## Installation + +composer require xaviborja/php-mondialrelay-api \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit new file mode 100644 index 00000000..4ba32564 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit @@ -0,0 +1 @@ +../vendor/phpunit/phpunit/phpunit \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json new file mode 100644 index 00000000..62cd3c2a --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json @@ -0,0 +1,26 @@ +{ + "name": "xaviborja/php-mondialrelay-api", + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)", + "license": "MIT", + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "autoload": { + "psr-4": {"MondialRelay\\": "src/MondialRelay/"} + }, + "autoload-dev": { + "psr-4": {"MondialRelay\\": "tests/MondialRelay/"} + }, + "config": { + "bin-dir": "bin" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + } +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock new file mode 100644 index 00000000..8a888c40 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock @@ -0,0 +1,1334 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "8c06eaf6adaabe01bf46a48dc8762f8d", + "content-hash": "8f1695d3c1fcb4d11101af5575b9d8af", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-04-12 18:52:22" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27 11:43:31" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30 07:12:33" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25 06:54:22" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02 20:05:34" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02 07:44:40" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03 07:40:28" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26 11:10:40" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-02-27 10:12:30" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.19", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "69c4f49ff376af2692bad9cebd883d17ebaa98a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/69c4f49ff376af2692bad9cebd883d17ebaa98a1", + "reference": "69c4f49ff376af2692bad9cebd883d17ebaa98a1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-04-03 02:22:27" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2016-12-08 20:27:08" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04 06:30:41" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29 09:50:25" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08 07:14:41" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-11-26 07:53:53" + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19 08:54:04" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12 03:26:01" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18 15:18:39" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19 07:33:16" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28 20:34:47" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03 07:35:21" + }, + { + "name": "symfony/yaml", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/62b4cdb99d52cb1ff253c465eb1532a80cebb621", + "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2017-03-20 09:45:15" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23 20:04:58" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "xaviborja/php-mondialrelay-api": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist new file mode 100644 index 00000000..44cdcf7c --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist @@ -0,0 +1,24 @@ + + + + + + + ./tests/ + + + + + + ./src/ + + + \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php new file mode 100644 index 00000000..adcf2091 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php @@ -0,0 +1,132 @@ +websiteId = $websiteId; + $this->websiteKey = $websiteKey; + $this->client = $soapClient; + } + + public function findDeliveryPoints(array $request) + { + try { + $request = $this->decorateRequest($request); + $result = $this->client->WSI4_PointRelais_Recherche($request); + + $pointFactory = new PointFactory(); + $this->checkResponse('WSI4_PointRelais_Recherche', $result); + $delivery_points = []; + if (!property_exists($result->WSI4_PointRelais_RechercheResult, 'PointsRelais')) { + return $delivery_points; + } + if (!property_exists($result->WSI4_PointRelais_RechercheResult->PointsRelais, 'PointRelais_Details')) { + return $delivery_points; + } + if (is_object($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details)) { + $delivery_points[] = $pointFactory->create($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details); + return $delivery_points; + } + foreach ($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details as $destination_point) { + $delivery_points[] = $pointFactory->create($destination_point); + } + return $delivery_points; + } catch (\SoapFault $e) { + throw new \Exception(); + } + + } + + public function findDeliveryPoint($id, $country) + { + try { + return $this->findDeliveryPoints(array( + 'NumPointRelais' => $id, + 'Pays' => $country + )); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + + private function decorateRequest($request) + { + $key = $this->websiteId; + foreach ($request as $parameter => $value) { + $key .= $value; + } + $key .= $this->websiteKey; + $request['Enseigne'] = $this->websiteId; + $request['Security'] = strtoupper(md5($key)); + return $request; + } + + private function checkResponse($method, $result) + { + $method = $method . "Result"; + if ($result->{$method}->STAT != 0) { + $request = $this->decorateRequest([ + 'STAT_ID' => $result->{$method}->STAT, + 'Langue' => 'FR', + ]); + $error_response = $this->client->WSI2_STAT_Label($request); + throw new \InvalidArgumentException($error_response->WSI2_STAT_LabelResult); + } + } + + public function createExpedition(array $request) + { + try { + + $request = $this->decorateRequest($request); + $result = $this->client->WSI2_CreationExpedition($request); + $this->checkResponse('WSI2_CreationExpedition', $result); + + return (new ExpeditionFactory())->create($result->WSI2_CreationExpeditionResult->STAT, + $result->WSI2_CreationExpeditionResult->ExpeditionNum, + $result->WSI2_CreationExpeditionResult->TRI_AgenceCode, + $result->WSI2_CreationExpeditionResult->TRI_Groupe, + $result->WSI2_CreationExpeditionResult->TRI_Navette, + $result->WSI2_CreationExpeditionResult->TRI_Agence, + $result->WSI2_CreationExpeditionResult->TRI_TourneeCode, + $result->WSI2_CreationExpeditionResult->TRI_LivraisonMode, + $result->WSI2_CreationExpeditionResult->CodesBarres->string); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + + public function generateTickets(array $request) + { + + try { + + $request = $this->decorateRequest($request); + $result = $this->client->WSI3_GetEtiquettes($request); + $this->checkResponse('WSI3_GetEtiquettes', $result); + + return (new TicketFactory())->create($result->WSI3_GetEtiquettesResult->STAT, + $result->WSI3_GetEtiquettesResult->URL_PDF_A4, + $result->WSI3_GetEtiquettesResult->URL_PDF_A5, + $result->WSI3_GetEtiquettesResult->URL_PDF_10x15); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php new file mode 100644 index 00000000..2da171c7 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php @@ -0,0 +1,51 @@ +day = $day; + $this->openingTime1 = $openingTime1; + $this->closingTime1 = $closingTime1; + $this->openingTime2 = $openingTime2; + $this->closingTime2 = $closingTime2; + } + + public function day() + { + return $this->day; + } + + public function openingTime1() + { + return $this->openingTime1; + } + + public function closingTime1() + { + return $this->closingTime1; + } + + public function openingTime2() + { + return $this->openingTime2; + } + + public function closingTime2() + { + return $this->closingTime2; + } + + + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php new file mode 100644 index 00000000..94e81ccc --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php @@ -0,0 +1,39 @@ + 'Horaires_Lundi', + 'tuesday' => 'Horaires_Mardi', + 'wednesday' => 'Horaires_Mercredi', + 'thursday' => 'Horaires_Jeudi', + 'friday' => 'Horaires_Vendredi', + 'saturday' => 'Horaires_Samedi', + 'sunday' => 'Horaires_Dimanche' + ]; + + public function create($response) + { + $bussines_hours = []; + foreach (self::$property_days_name as $day => $property) { + $bussines_hours[] = new BussinessHours( + $day, + $response->$property->string[0], + $response->$property->string[1], + $response->$property->string[2], + $response->$property->string[3] + ); + } + return $bussines_hours; + + } +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php new file mode 100644 index 00000000..42d83146 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php @@ -0,0 +1,124 @@ +stat = $stat; + $this->expeditionNum = $expeditionNum; + $this->triAgenceCode = $triAgenceCode; + $this->triGroupe = $triGroupe; + $this->triNavette = $triNavette; + $this->triAgence = $triAgence; + $this->triTourneeCode = $triTourneeCode; + $this->triLivraisonMode = $triLivraisonMode; + $this->codesBarres = $codesBarres; + } + + /** + * @return mixed + */ + public function stat() + { + return $this->stat; + } + + /** + * @return mixed + */ + public function expeditionNum() + { + return $this->expeditionNum; + } + + /** + * @return mixed + */ + public function triAgenceCode() + { + return $this->triAgenceCode; + } + + /** + * @return mixed + */ + public function triGroupe() + { + return $this->triGroupe; + } + + /** + * @return mixed + */ + public function triNavette() + { + return $this->triNavette; + } + + /** + * @return mixed + */ + public function triAgence() + { + return $this->triAgence; + } + + /** + * @return mixed + */ + public function triTourneeCode() + { + return $this->triTourneeCode; + } + + /** + * @return mixed + */ + public function triLivraisonMode() + { + return $this->triLivraisonMode; + } + + /** + * @return mixed + */ + public function codesBarres() + { + return $this->codesBarres; + } + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php new file mode 100644 index 00000000..62e6f4ea --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php @@ -0,0 +1,34 @@ +id = $id; + $this->latitude = $latitude; + $this->longitude = $longitude; + $this->cp = $cp; + $this->address = $address; + $this->city = $city; + $this->country = $country; + $this->location = $location; + $this->activityType = $activityType; + $this->information = $information; + $this->distance = $distance; + $this->business_hours = $business_hours; + } + + + public function id() + { + return $this->id; + } + + public function address() + { + return $this->address; + } + + public function latitude() + { + return $this->latitude; + } + + public function longitude() + { + return $this->longitude; + } + + public function cp() + { + return $this->cp; + } + + public function city() + { + return $this->city; + } + + public function country() + { + return $this->country; + } + + public function location() + { + return $this->location; + } + + public function activityType() + { + return $this->activityType; + } + + public function information() + { + return $this->information; + } + + public function distance() + { + return $this->distance; + } + + public function business_hours() + { + return $this->business_hours; + } + + +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php new file mode 100644 index 00000000..fb3491ee --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php @@ -0,0 +1,51 @@ +$var)) { + return $response->$var; + } else { + return ''; + } + } + + public function create($response) + { + $bussines_hours = (new BussinessHoursFactory())->create($response); + return new Point( + $response->Num, + str_replace(",", ".", $response->Latitude), + str_replace(",", ".", $response->Longitude), + $response->CP, + [ + trim($this->safeGet($response, 'LgAdr1')), + trim($this->safeGet($response, 'LgAdr2')), + trim($this->safeGet($response, 'LgAdr3')), + trim($this->safeGet($response, 'LgAdr4')), + ], + $response->Ville, + $response->Pays, + [ + $this->safeGet($response, 'Localisation1'), + $this->safeGet($response, 'Localisation2'), + ], + $response->TypeActivite, + $response->Information, + $response->Distance, + $bussines_hours + ); + + } +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php new file mode 100644 index 00000000..83a1b0e8 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php @@ -0,0 +1,63 @@ +stat = $stat; + $this->urlPDFA4 = $urlPDFA4; + $this->urlPDFA5 = $urlPDFA5; + $this->url10x15 = $url10x15; + } + + /** + * @return mixed + */ + public function getStat() + { + return $this->stat; + } + + /** + * @return mixed + */ + public function getUrlPDFA4() + { + return $this->urlPDFA4; + } + + /** + * @return mixed + */ + public function getUrlPDFA5() + { + return $this->urlPDFA5; + } + + /** + * @return mixed + */ + public function getUrl10x15() + { + return $this->url10x15; + } + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php new file mode 100644 index 00000000..e1965682 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php @@ -0,0 +1,13 @@ +client = new ApiClient(new \SoapClient("http://api.mondialrelay.com/Web_Services.asmx?WSDL"), + self::WEBSITEID, self::WEBSITEKEY); + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersAreSent() + { + $this->client->findDeliveryPoints([]); + } + + /** + * @test + */ + public function itShouldReturnAnEmptyStringIfNoPointsAreFound() + { + $points = $this->client->findDeliveryPoints(array( + 'Pays' => "ES", + 'Ville' => "", + 'CP' => '12345', + 'Latitude' => "", + 'Longitude' => "", + 'Taille' => "", + 'Poids' => "", + 'Action' => "", + 'DelaiEnvoi' => "0", + 'RayonRecherche' => "0" + )); + $this->assertEmpty($points); + } + + /** + * @test + */ + public function itShouldReturnAnArrayOfPointsIfParametersMatch() + { + $points = $this->client->findDeliveryPoints(array( + 'Pays' => "ES", + 'Ville' => "", + 'CP' => '08915', + 'Latitude' => "", + 'Longitude' => "", + 'Taille' => "", + 'Poids' => "", + 'Action' => "", + 'DelaiEnvoi' => "0", + 'RayonRecherche' => "20" + )); + foreach ($points as $point) { + $this->assertInstanceOf(Point::class, $point); + } + } + + /** + * @test + */ + public function itShouldReturnAValidPoint() + { + $point = $this->client->findDeliveryPoint('077712', 'ES'); + $this->assertInstanceOf(Point::class, $point); + } + + /** + * @test + */ + public function itShouldReturnAValidExpedition() + { + $expedition = $this->client->createExpedition(array( + 'ModeCol' => 'CCC', /*^(CCC|CDR|CDS|REL)$*/ + 'ModeLiv' => '24R', /*^(LCC|LD1|LDS|24R|24L|24X|ESP|DRI)$*/ + 'NDossier' => '55415', + 'NClient' => '147014', + 'Expe_Langage' => 'ES', + 'Expe_Ad1' => 'Albert', + 'Expe_Ad2' => '', + 'Expe_Ad3' => 'Calle Falsa', + 'Expe_Ad4' => '123', + 'Expe_Ville' => 'Granollers', + 'Expe_CP' => '08402', + 'Expe_Pays' => 'ES', + 'Expe_Tel1' => '+34666234566', + 'Expe_Tel2' => '', + 'Expe_Mail' => 'pepe@test.com', + 'Dest_Langage' => 'ES', + 'Dest_Ad1' => 'Client1', + 'Dest_Ad2' => 'LLIBRERIA CASABELLA', + 'Dest_Ad3' => 'AV PUIG I CADAFALCH', + 'Dest_Ad4' => '10', + 'Dest_Ville' => 'Granollers', + 'Dest_CP' => '08402', + 'Dest_Pays' => 'ES', + 'Dest_Tel1' => '', + 'Dest_Mail' => 'test@test.com', + 'Poids' => '123', + 'Longueur' => '1', + 'Taille' => 'XL', + 'NbColis' => '1', + 'CRT_Valeur' => '1780', + 'CRT_Devise' => 'EUR', + 'Exp_Valeur' => '1780', + 'Exp_Devise' => 'EUR', + 'COL_Rel_Pays' => 'ES', + 'COL_Rel' => '0000', + 'LIV_Rel_Pays' => 'ES', + 'LIV_Rel' => '053589', + 'TAvisage' => 'N', + 'TReprise' => 'N', + 'Montage' => '0', + 'TRDV' => 'N', + 'Instructions' => '0', + 'Assurance' => '' + )); + $this->assertInstanceOf(Expedition::class, $expedition); + } + + /** + * @test + */ + public function itShouldReturnAValidTicket() + { + $ticket = $this->client->generateTickets(array( + 'Expeditions' => '12345678', /*^[0-9]{8}(;[0-9]{8})*$*/ + 'Langue' => 'ES' /*^[A-Z]{2}$*/ + )); + + $this->assertInstanceOf(Ticket::class, $ticket); + } + + + /** + * @test + */ + public function itShouldReturnAnArrayOfValidTickets() + { + $tickets = $this->client->generateTickets(array( + 'Expeditions' => '12345678;87654321', /*^[0-9]{8}(;[0-9]{8})*$*/ + 'Langue' => 'ES' /*^[A-Z]{2}$*/ + )); + + foreach ($tickets as $ticket) { + $this->assertInstanceOf(Ticket::class, $ticket); + } + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersOfTicketsAreSent() + { + $this->client->generateTickets([]); + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersOfExpeditionsAreSent() + { + $this->client->createExpedition([]); + } + +}