public function getTemplateVarCustomization(array $product)
 {
     $product_customizations = array();
     $imageRetriever = new ImageRetriever($this->context->link);
     foreach ($product['customizedDatas'] as $byAddress) {
         foreach ($byAddress as $customization) {
             $presentedCustomization = array('quantity' => $customization['quantity'], 'fields' => array(), 'id_customization' => null);
             foreach ($customization['datas'] as $byType) {
                 $field = array();
                 foreach ($byType as $data) {
                     switch ($data['type']) {
                         case Product::CUSTOMIZE_FILE:
                             $field['type'] = 'image';
                             $field['image'] = $imageRetriever->getCustomizationImage($data['value']);
                             break;
                         case Product::CUSTOMIZE_TEXTFIELD:
                             $field['type'] = 'text';
                             $field['text'] = $data['value'];
                             break;
                         default:
                             $field['type'] = null;
                     }
                     $field['label'] = $data['name'];
                     $field['id_module'] = $data['id_module'];
                     $presentedCustomization['id_customization'] = $data['id_customization'];
                 }
                 $presentedCustomization['fields'][] = $field;
             }
             $product_customizations[] = $presentedCustomization;
         }
     }
     return $product_customizations;
 }
 protected function addProductCustomizationData(array $product_full)
 {
     if ($product_full['customizable']) {
         $customizationData = array('fields' => array());
         $customized_data = array();
         $already_customized = $this->context->cart->getProductCustomization($product_full['id_product'], null, true);
         $id_customization = 0;
         foreach ($already_customized as $customization) {
             $id_customization = $customization['id_customization'];
             $customized_data[$customization['index']] = $customization;
         }
         $customization_fields = $this->product->getCustomizationFields($this->context->language->id);
         if (is_array($customization_fields)) {
             foreach ($customization_fields as $customization_field) {
                 // 'id_customization_field' maps to what is called 'index'
                 // in what Product::getProductCustomization() returns
                 $key = $customization_field['id_customization_field'];
                 $field['label'] = $customization_field['name'];
                 $field['id_customization_field'] = $customization_field['id_customization_field'];
                 $field['required'] = $customization_field['required'];
                 switch ($customization_field['type']) {
                     case Product::CUSTOMIZE_FILE:
                         $field['type'] = 'image';
                         $field['image'] = null;
                         $field['input_name'] = 'file' . $customization_field['id_customization_field'];
                         break;
                     case Product::CUSTOMIZE_TEXTFIELD:
                         $field['type'] = 'text';
                         $field['text'] = '';
                         $field['input_name'] = 'textField' . $customization_field['id_customization_field'];
                         break;
                     default:
                         $field['type'] = null;
                 }
                 if (array_key_exists($key, $customized_data)) {
                     $data = $customized_data[$key];
                     $field['is_customized'] = true;
                     switch ($customization_field['type']) {
                         case Product::CUSTOMIZE_FILE:
                             $imageRetriever = new ImageRetriever($this->context->link);
                             $field['image'] = $imageRetriever->getCustomizationImage($data['value']);
                             $field['remove_image_url'] = $this->context->link->getProductDeletePictureLink($product_full, $customization_field['id_customization_field']);
                             break;
                         case Product::CUSTOMIZE_TEXTFIELD:
                             $field['text'] = $data['value'];
                             break;
                     }
                 } else {
                     $field['is_customized'] = false;
                 }
                 $customizationData['fields'][] = $field;
             }
         }
         $product_full['customizations'] = $customizationData;
         $product_full['id_customization'] = $id_customization;
         $product_full['is_customizable'] = true;
     } else {
         $product_full['customizations'] = array('fields' => array());
         $product_full['id_customization'] = 0;
         $product_full['is_customizable'] = false;
     }
     return $product_full;
 }
 protected function getImage($object, $id_image)
 {
     $retriever = new ImageRetriever($this->context->link);
     return $retriever->getImage($object, $id_image);
 }