Ejemplo n.º 1
0
 /**
  * Display product measurement (L x W x H) in centimeters or articles measurement with flexible format
  * @param int $language_id
  * @param int $articles_id
  * @param string $unit_separator
  * @param const $format
  * @param string $dec_separator
  * @return string
  */
 public function displayMeasurement($language_id, $articles_id = '', $unit_separator = '', $format = self::FORMAT_DISPLAYMEASUREMENT_PM1, $dec_separator = '')
 {
     //TODO:
     //Move displayMeasurement for article in ProductArticle object
     //Load ProductMeasurement like OOP (must update the class first)
     //1 function shoud have only 1 return (at the bottom of the function)
     use_class('ProductMeasurement');
     $class_pmr = new ProductMeasurement();
     if ($articles_id !== '') {
         $result = '';
         $measurements_labels = array();
         $measurements_values = array();
         if ($format == self::FORMAT_DISPLAYMEASUREMENT_PM1 || $format == self::FORMAT_DISPLAYMEASUREMENT_PM2) {
             $l = $this->detail['pd2']['length'] > 0 ? $this->detail['pd2']['length'] / 10 : 0;
             $w = $this->detail['pd2']['width'] > 0 ? $this->detail['pd2']['width'] / 10 : 0;
             $h = $this->detail['pd2']['height'] > 0 ? $this->detail['pd2']['height'] / 10 : 0;
             if ($l > 10 || $w > 10 || $h > 10) {
                 $dec_number = 0;
             } else {
                 $dec_number = 1;
             }
             if ($dec_separator == '') {
                 if ($language_id == '2' || $language_id == '3') {
                     $dec_separator = ',';
                 } else {
                     $dec_separator = '.';
                 }
             }
             if ($language_id == 1) {
                 $measurements_labels[] = 'Length';
                 $measurements_labels[] = 'Width';
                 $measurements_labels[] = 'Height';
             } elseif ($language_id == 2) {
                 $measurements_labels[] = 'Länge';
                 $measurements_labels[] = 'Breite';
                 $measurements_labels[] = 'Höhe';
             } elseif ($language_id == 3) {
                 $measurements_labels[] = 'Panjang';
                 $measurements_labels[] = 'Lebar';
                 $measurements_labels[] = 'Tinggi';
             }
             $measurements_values[] = number_format($l, $dec_number, $dec_separator, '') . 'cm';
             $measurements_values[] = number_format($w, $dec_number, $dec_separator, '') . 'cm';
             $measurements_values[] = number_format($h, $dec_number, $dec_separator, '') . 'cm';
         } else {
             $measurements = Product::getOldProductArticleFunction()->getMeasurementDetail($this->id, $articles_id);
             foreach ($measurements as $msr_id => $msr_dt) {
                 $msr_desc = $class_pmr->getDescription($msr_id, $language_id);
                 $measurements_labels[$msr_id] = $msr_desc[$language_id]['name'];
                 list($msr_val, $msr_unit) = explode(' ', $msr_dt['measurements_value']);
                 if ($msr_val !== '') {
                     $measurements_values[$msr_id] = $msr_val . $unit_separator . $msr_unit;
                 } else {
                     unset($measurements_labels[$msr_val]);
                 }
             }
         }
         switch ($format) {
             case self::FORMAT_DISPLAYMEASUREMENT_PM1:
             case self::FORMAT_DISPLAYMEASUREMENT_AM1:
                 $result = implode(' x ', $measurements_labels) . ' - ' . implode(' x ', $measurements_values);
                 break;
             case self::FORMAT_DISPLAYMEASUREMENT_AM2:
                 $size_text = $this->getLengthOrSizeAsText($articles_id);
                 $result = implode(' x ', $measurements_labels) . ' - ' . $size_text . ($size_text != '' ? ' ' : '') . '(' . implode(' x ', $measurements_values) . ')';
                 break;
             case self::FORMAT_DISPLAYMEASUREMENT_PM2:
             case self::FORMAT_DISPLAYMEASUREMENT_AM3:
                 foreach ($measurements_labels as $msr_id => $msr_lbl) {
                     $result .= ($result != '' ? ', ' : '') . $msr_lbl . ' : ' . $measurements_values[$msr_id];
                 }
                 break;
             case self::FORMAT_DISPLAYMEASUREMENT_AM4:
                 $result = implode(' x ', $measurements_labels) . ': ';
                 $dm_am4 = '';
                 foreach ($this->articles as $aid => $article) {
                     $dm_am4_size = $this->getLengthOrSizeAsText($aid);
                     $msr_val_temp = array();
                     foreach ($article['measurements'] as $msr_id => $msr_dt) {
                         list($msr_val, $msr_unit) = explode(' ', $msr_dt['measurements_value']);
                         $msr_val_temp[] = $msr_val . $unit_separator . $msr_unit;
                     }
                     $dm_am4_msr = implode(' x ', $msr_val_temp);
                     $dm_am4[] = "{$dm_am4_size} ({$dm_am4_msr})";
                 }
                 $result .= implode('; ', $dm_am4);
                 break;
         }
         return $result;
     } else {
         $l = $this->detail['pd2']['length'] > 0 ? $this->detail['pd2']['length'] / 10 : 0;
         $w = $this->detail['pd2']['width'] > 0 ? $this->detail['pd2']['width'] / 10 : 0;
         $h = $this->detail['pd2']['height'] > 0 ? $this->detail['pd2']['height'] / 10 : 0;
         if ($l > 10 || $w > 10 || $h > 10) {
             $dec_number = 0;
         } else {
             $dec_number = 1;
         }
         if ($language_id == '2' || $language_id == '3') {
             $dec_separator = ',';
         } else {
             $dec_separator = '.';
         }
         $measurement = array();
         $measurement[] = number_format($l, $dec_number, $dec_separator, '');
         $measurement[] = number_format($w, $dec_number, $dec_separator, '');
         $measurement[] = number_format($h, $dec_number, $dec_separator, '');
         //return implode(' x ', $measurement) . ' cm';
         return implode(' x ', $measurement);
     }
 }
     $measurements_id = tep_db_prepare_input($_GET['id']);
     $measurements_data = $class_pmr->getDetail($measurements_id);
 } else {
     $measurements_id = '';
 }
 $content .= '<div id="measurement-tabs" style="margin:20px 0px;width:600px;">';
 $content .= '<form name="measurements_detail" action="?open=products-measurements" method="post">';
 $content .= '<ul>';
 foreach ($languages as $lid => $l) {
     $content .= '<li><a href="#measurement-desc-' . $lid . '"><span>' . $l['name'] . '</span></a></li>';
 }
 $content .= '</ul>';
 foreach ($languages as $lid => $language) {
     $form_measurement_detail = array();
     if ($measurements_id > 0) {
         $measurements_detail_data = $class_pmr->getDescription($measurements_id, $lid);
     }
     $form_measurement_detail[$lid]['label'] = 'Name';
     $name = isset($measurements_detail_data[$lid]['name']) ? $measurements_detail_data[$lid]['name'] : '';
     $form_measurement_detail[$lid]['field'] = '<input type="text" name="name[' . $lid . ']"' . ' value="' . $name . '" class="input2" />';
     $content .= '<div id="measurement-desc-' . $lid . '">';
     $content .= tep_draw_table('form', $form_measurement_detail);
     $content .= '</div>';
 }
 $content .= '<div style="margin-top:5px">';
 $content .= '<input type="hidden" name="me_action" value="MEASUREMENTSAVE" />';
 $content .= '<input type="hidden" name="measurements_id" value="' . $measurements_id . '" />';
 $content .= '<input type="submit" class="blue" name="submit" value="Save Measurement" />';
 $content .= '<input type="button" name="back" value="Cancel"/>';
 $content .= '</div>';
 $content .= '</form>';