Hola @sergioseller97, tus compañeros tienen razón en varios puntos. La referencia a PHP 8.2 y GridDefinitionInterface indica que estás lidiando con código que apunta a una arquitectura más moderna de PrestaShop (como la 8.x o 9.x), mientras que tu entorno 1.7.6.7 (con PHP 5.6-7.2) es más antiguo. Los type hints de PHP 8.2 generarían ParseError en tu versión de PHP.
Para el hookActionCustomerGridDefinitionModifier, el problema que describes con las múltiples llamadas no debería estar directamente relacionado con las llamadas a una API externa, ya que este hook está diseñado para modificar la estructura de la cuadrícula de clientes en el Back Office. Si tu módulo está llamando a una API aquí, es una implementación incorrecta.
Para asegurar que el hook se maneje correctamente en tu entorno 1.7.6.7, y sin los problemas de type hints de PHP 8.2, podrías modificar el fragmento así, priorizando la compatibilidad y la robustez:
function hookActionCustomerGridDefinitionModifier(array $params)
{
// Asegurarse de que 'definition' existe y es un objeto antes de la validación de interfaz
if (!isset($params['definition']) || !is_object($params['definition'])) {
return;
}
// Para PS 1.7.x, el instanceof GridDefinitionInterface podría ser problemático con versiones de PHP antiguas
// Se asume que el objeto tiene los métodos getColumns() en un contexto de grid.
$definition = $params['definition'];
if (!method_exists($definition, 'getColumns')) {
Este código es más permisivo y comprueba is_object y method_exists en lugar de instanceof GridDefinitionInterface directamente, que podría no ser reconocido en PHP 5.6-7.2 si la clase no está cargada o definida exactamente como espera una versión superior. Esto debería evitar errores fatales. Si el módulo además gestiona llamadas a API en hooks como actionObjectCustomerUpdateAfter, como mencionó @anadigital, necesitarás implementar una lógica de prevención de duplicados allí (como un static flag o un mecanismo de bloqueo temporal).
Para una gestión avanzada y estable de la cuadrícula de clientes en PrestaShop, sin estos conflictos de versiones ni la necesidad de parches manuales, te recomendaría considerar una solución dedicada como un módulo de automatización de customer grid – columnas, que ya está optimizado para diferentes entornos de PrestaShop.