From 28e999baf0e7a3aea67fe209a1d959f50b70c9db Mon Sep 17 00:00:00 2001 From: Isabelle Date: Mon, 2 Mar 2026 13:22:25 +0100 Subject: [PATCH] fix(webservice): Namespaces and redundancies redundant require statements, clean up install trait, standardize trait names, remove hard-coded php version require for composer.json --- composer.json | 5 +---- config/services.yml | 8 +++----- controllers/front/ajax.php | 6 +++--- src/Controller/OrderReferenceController.php | 19 ++++++++++++++++++ src/Database/ReferenceInstaller.php | 2 +- src/Entity/OrderReference.php | 4 ++-- src/Module/Install.php | 22 ++++++++++++++++----- src/Module/actionHooks.php | 5 +++-- src/Module/displayHooks.php | 6 +++--- src/Repository/OrderReferenceRepository.php | 4 ++-- ws_orderreference.php | 14 ++++++------- 11 files changed, 60 insertions(+), 35 deletions(-) create mode 100644 src/Controller/OrderReferenceController.php diff --git a/composer.json b/composer.json index 661318d..e8d5ac3 100644 --- a/composer.json +++ b/composer.json @@ -7,12 +7,9 @@ "email": "isabelle@dewebsmid.nl" } ], - "require": { - "php": ">=8.2.0" - }, "autoload": { "psr-4": { - "Module\\WsOrderreference\\": "src/" + "Websmid\\WsOrderReference\\": "src/" }, "classmap": [ "ws_orderreference.php", diff --git a/config/services.yml b/config/services.yml index 1974f82..05d9fb3 100644 --- a/config/services.yml +++ b/config/services.yml @@ -3,17 +3,15 @@ services: autowire: true autoconfigure: true - Module\WsOrderreference\Controller\: - resource: "../src/Controller/*" # Repository - this makes it available via dependency injection - Module\WsOrderreference\Repository\OrderReferenceRepository: + Websmid\WsOrderReference\Repository\OrderReferenceRepository: public: true factory: ["@doctrine.orm.default_entity_manager", getRepository] arguments: - - Module\WsOrderreference\Entity\OrderReference + - Websmid\WsOrderReference\Entity\OrderReference # Database installer - Module\WsOrderreference\Database\ReferenceInstaller: + Websmid\WsOrderReference\Database\ReferenceInstaller: public: true arguments: - "@doctrine.dbal.default_connection" diff --git a/controllers/front/ajax.php b/controllers/front/ajax.php index 0d030b3..01bdd84 100644 --- a/controllers/front/ajax.php +++ b/controllers/front/ajax.php @@ -1,7 +1,7 @@ setIdCart($idCart); } - $orderRef->setOrderReference($orderReference); + $orderRef->setOrderReference(pSQL($orderReference)); $entityManager->persist($orderRef); $entityManager->flush(); diff --git a/src/Controller/OrderReferenceController.php b/src/Controller/OrderReferenceController.php new file mode 100644 index 0000000..2ceacf3 --- /dev/null +++ b/src/Controller/OrderReferenceController.php @@ -0,0 +1,19 @@ + $id_order, + 'customReference' => 'DUMMY-REF-12345', + 'status' => 'This is a test response' + ]); + } +} \ No newline at end of file diff --git a/src/Database/ReferenceInstaller.php b/src/Database/ReferenceInstaller.php index 2c33c4f..b10f753 100644 --- a/src/Database/ReferenceInstaller.php +++ b/src/Database/ReferenceInstaller.php @@ -14,7 +14,7 @@ declare(strict_types=1); -namespace Module\WsOrderreference\Database; +namespace Websmid\WsOrderReference\Database; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Exception as DBALException; diff --git a/src/Entity/OrderReference.php b/src/Entity/OrderReference.php index 5389805..9eb0a29 100644 --- a/src/Entity/OrderReference.php +++ b/src/Entity/OrderReference.php @@ -10,13 +10,13 @@ declare(strict_types=1); -namespace Module\WsOrderreference\Entity; +namespace Websmid\WsOrderReference\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table() - * @ORM\Entity(repositoryClass="Module\WsOrderreference\Repository\OrderReferenceRepository") + * @ORM\Entity(repositoryClass="Websmid\WsOrderReference\Repository\OrderReferenceRepository") */ class OrderReference { diff --git a/src/Module/Install.php b/src/Module/Install.php index bf229e7..dd44f13 100644 --- a/src/Module/Install.php +++ b/src/Module/Install.php @@ -1,16 +1,28 @@ installTables() - && parent::install() - && $this->registerHook('displayShoppingCart') + if (!parent::install()) { + return false; + } + if (!$this->installTables()){ + return false; + } + if (!$this->registerHooks()){ + return false; + } + + return true; + } + + public function registerHooks(){ + return $this->registerHook('displayShoppingCart') && $this->registerHook('displayPDFDeliverySlip') && $this->registerHook('addWebserviceResources') && $this->registerHook('actionFrontControllerSetMedia'); diff --git a/src/Module/actionHooks.php b/src/Module/actionHooks.php index ba8a3ad..ac3ec65 100644 --- a/src/Module/actionHooks.php +++ b/src/Module/actionHooks.php @@ -1,8 +1,8 @@ 'all', 'priority' => 150] ); } + // Register in web service using specific management to bypass objectmodel handling and return custom data. // I used specific_management because otherwise I'd have to make an objectmodel which conflicts with the doctrine entity I made. // Instead of having to manage two places where the order reference is handled, I can just use the specific management to return the data from the db directly. diff --git a/src/Module/displayHooks.php b/src/Module/displayHooks.php index 3e9b443..96a31af 100644 --- a/src/Module/displayHooks.php +++ b/src/Module/displayHooks.php @@ -1,8 +1,8 @@ id_order; - $orderReferenceRepo = \PrestaShop\PrestaShop\Adapter\SymfonyContainer::getInstance()->get('Module\WsOrderreference\Repository\OrderReferenceRepository'); + $orderReferenceRepo = \PrestaShop\PrestaShop\Adapter\SymfonyContainer::getInstance()->get('Websmid\WsOrderReference\Repository\OrderReferenceRepository'); $orderReference = $orderReferenceRepo->customRefByOrderId($orderId); $this->context->smarty->assign('orderReference', $orderReference); diff --git a/src/Repository/OrderReferenceRepository.php b/src/Repository/OrderReferenceRepository.php index bfd336d..cf385ee 100644 --- a/src/Repository/OrderReferenceRepository.php +++ b/src/Repository/OrderReferenceRepository.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace Module\WsOrderreference\Repository; +namespace Websmid\WsOrderReference\Repository; use Doctrine\ORM\EntityRepository; -use Module\WsOrderreference\Entity\OrderReference; +use Websmid\WsOrderReference\Entity\OrderReference; class OrderReferenceRepository extends EntityRepository { diff --git a/ws_orderreference.php b/ws_orderreference.php index 3845b2c..a56fd65 100644 --- a/ws_orderreference.php +++ b/ws_orderreference.php @@ -4,25 +4,23 @@ if (!defined('_PS_VERSION_')) { exit; } -use Module\WsOrderreference\Module\Install; -use Module\WsOrderreference\Module\displayHooks; -use Module\WsOrderreference\Module\actionHooks; - +use Websmid\WsOrderReference\Module\Install; +use Websmid\WsOrderReference\Module\DisplayHooks; +use Websmid\WsOrderReference\Module\ActionHooks; if (file_exists(__DIR__ . '/vendor/autoload.php')) { require_once __DIR__ . '/vendor/autoload.php'; } -require_once __DIR__ . '/classes/WebserviceSpecificManagementOrderreference.php'; - class Ws_OrderReference extends Module { /** @var OrderReferenceRepository */ protected $orderReferenceRepository; use Install; - use displayHooks; - use actionHooks; + use DisplayHooks; + use ActionHooks; + public function __construct() {