modulo = $modulo; $this->context = Context::getContext(); } /** * Devuelve las categorias a mover para un producto determinado * @param int $idProduct * @return array */ public function getCategoriesByProductFeature($idProduct) { $categories = array(); $producto = new ProductCore($idProduct); $features = $producto->getFeatures(); $catFeatures = unserialize(Configuration::getGlobalValue($this->modulo->sufijo . 'CATS_FEATURE')); if($features && $catFeatures) { foreach($features AS $feature) { foreach($catFeatures AS $catFeature) { if($feature['id_feature_value'] == $catFeature['valorCaracteristicaSeleccionado']) { $categories[] = $catFeature['tipoSeleccionado']; break; } } } } return $categories; } /** * Agrega al producto las categorias pasadas. * @param Product $producto * @param int[] $categorias */ public function agregarCategorias($producto, $categorias) { $categoriasActuales = $producto->getCategories(); $nuevasCategorias = array_diff($categorias, $categoriasActuales); foreach ($nuevasCategorias as $categoria) { $this->guardarMovimiento($producto->id, $categoria); } $producto->addToCategories($nuevasCategorias); } /** * Anota una nueva categoria de producto. * @param int $id_product * @param int $id_category * @return boolean */ private function guardarMovimiento($id_product, $id_category) { $id_product = (int) $id_product; $id_category = (int) $id_category; return Db::getInstance()->execute('INSERT IGNORE INTO `' . _DB_PREFIX_ . $this->modulo->sufijo . "movimiento` (id_product, id_category) VALUES ('$id_product', '$id_category')"); } /** * Devuelve los ids de categoria a los que el producto fue agregado. * @param int $id_product * @return int[] */ private function cargarMovimientos($id_product) { $id_product = (int) $id_product; $movimientos = Db::getInstance()->executeS('SELECT id_category FROM `' . _DB_PREFIX_ . $this->modulo->sufijo . "movimiento` WHERE id_product = '$id_product'"); return array_column($movimientos, 'id_category'); } /** * Elimina los movimientos de un producto. * @param int $id_product * @return boolean */ private function eliminarMovimientos($id_product) { $id_product = (int) $id_product; return Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->modulo->sufijo . "movimiento` WHERE id_product = '$id_product'"); } /** * Quita al producto las categorias agregadas. * @param Product $producto */ public function deshacerMovimientos($producto) { $idsCategoria = $this->cargarMovimientos($producto->id); $num = count($idsCategoria); foreach ($idsCategoria as $clave => $idCategoria) { //$producto->deleteCategory($idCategoria, ($clave == $num - 1)); $producto->deleteCategory($idCategoria, false); } $this->eliminarMovimientos($producto->id); } /** * Monta una lista de categorias recursivamente. * @param array $categoria * @param string $html * @param int[] $categoriasSeleccionada */ public function getHijosSelect($categoria, &$respuesta) { $categoriasHijos = Category::getChildren($categoria['id_category'], $this->modulo->idLang); if (count($categoriasHijos)) { foreach ($categoriasHijos AS $categoriaHijo) { $respuesta[$categoriaHijo['id_category']] = $categoriaHijo['name'] . ' (' . $categoriaHijo['id_category'] . ')'; $this->getHijosSelect($categoriaHijo, $respuesta); } } } public function getFormCategorizacion($idTab) { //Datos para js $caracteristicas = Feature::getFeatures($this->modulo->idLang); $caracteristicasFormateadas = array(0 => $this->modulo->l('- Seleccione uno -')); $valoresCaracteristicaFormateados = array(); foreach ($caracteristicas as $caracteristica) { $caracteristicasFormateadas[$caracteristica['id_feature']] = $caracteristica['name']; $valoresCaracteristica = FeatureValue::getFeatureValuesWithLang($this->modulo->idLang, $caracteristica['id_feature']); if ($valoresCaracteristica) { foreach ($valoresCaracteristica as $valorCaracteristica) { if (!isset($valoresCaracteristicaFormateados[$caracteristica['id_feature']])) { $valoresCaracteristicaFormateados[$caracteristica['id_feature']] = array(0 => $this->modulo->l('- Seleccione uno -')); } $valoresCaracteristicaFormateados[$caracteristica['id_feature']][$valorCaracteristica['id_feature_value']] = $valorCaracteristica['value']; } } else { $valoresCaracteristicaFormateados[$caracteristica['id_feature']] = array(0 => $this->modulo->l('- Seleccione uno -')); } } $tiposFormateados = array(); $this->getHijosSelect(array('id_category' => $this->context->shop->id_category), $tiposFormateados); $form = new imaxForm($this->modulo, $this->modulo->getPathUri()); $form->createHidden("accion", "configurarCategorizacion"); $form->createHidden("idTab", $idTab); $form->addToForm('
| ' . $this->modulo->l('Caracteristica') . ' | ' . $this->modulo->l('Valor caracteristica') . ' | ' . $this->modulo->l('Categoria') . ' |
|---|