Advertisement
dimti

Untitled

Feb 11th, 2016
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.50 KB | None | 0 0
  1. <?php
  2.     public static function calc($id, $format = 'json')
  3.     {
  4.         FacetWPController::loadWordPressEnvironment();
  5.  
  6.         $post = get_post($id);
  7.  
  8.         $material = SingleWItems::getMaterial($post);
  9.  
  10.         $reelSize = SingleWItems::getReelSize($post);
  11.  
  12.         $size_pattern = explode( '*', $reelSize );
  13.  
  14.         $size_width   = str_replace(',','.',$size_pattern[0]);
  15.  
  16.         $size_length = str_replace(',','.',$size_pattern[1]);
  17.  
  18.         $width      = str_replace(',','.',trim(htmlspecialchars($_POST['width'])));         //ширина помещения
  19.  
  20.         $length     = str_replace(',','.',trim(htmlspecialchars($_POST['length'])));        //длина помещения
  21.  
  22.         $height     = str_replace(',','.',trim(htmlspecialchars($_POST['height'])));        //высота помещения
  23.  
  24.         if ($width <= 0 || $length <= 0 || $height <= 0) {
  25.             echo json_encode(array('loadmsgerr'=>'Ошибка! Размеры комнаты должны быть неотрицательными числами!'));
  26.             exit;
  27.         }
  28.  
  29.         if ($width > 100 || $length > 100 || $height > 100) {
  30.             echo json_encode(array('loadmsgerr'=>'Ошибка! Размеры команты не должны превышать 100!'));
  31.             exit;
  32.         }
  33.  
  34.         $width_p = str_replace(',','.', $size_width);
  35.  
  36.         $length_p = str_replace(',','.', $size_length);
  37.  
  38.         $pattern_repeat_h = str_replace(',','.', get_field( 'product_pattern_repeat_h', $post ));
  39.  
  40.         if ( $pattern_repeat_h != null ) {
  41.             $fit_ph = $pattern_repeat_h;
  42.         } else {
  43.             $fit_ph = 0;
  44.         }
  45.  
  46.         $tech       = 0.10;       //технический подрез
  47.  
  48.         if(!(float)$width || $width ==''){      // помещение
  49.             echo json_encode(array('loadmsgerr'=>'Ошибка! Ширина помещения указывается только в цифрах!'));
  50.         }elseif(!(float)$length || $length ==''){
  51.             echo json_encode(array('loadmsgerr'=>'Ошибка! Длина помещения указывается только в цифрах!'));
  52.         }elseif(!(float)$height || $height ==''){
  53.             echo json_encode(array('loadmsgerr'=>'Ошибка! Высота до потолка указывается только в цифрах!'));
  54.         }elseif(!(float)$width_p || $width_p == ''){
  55.             echo json_encode(array('loadmsgerr'=>'Ошибка! Не указана ширина полотна!'));
  56.         }elseif(!(float)$length_p || $length_p == ''){
  57.             echo json_encode(array('loadmsgerr'=>'Ошибка! Не указана длина полотна!'));
  58.         }else{
  59.             $P      = ($width + $length) * 2 ;                  //периметр помещения
  60.  
  61.             $S      =  $P * $height;                            //площадь стен
  62.  
  63.             $one_pattern_height = $height + $tech + $fit_ph;    //высота полотна
  64.  
  65.             $quantity_patterns = $P / $width_p;                 //количество полотен на помещение
  66.  
  67.             if($fit_ph == '0' ){
  68.                 $all_quantity = $quantity_patterns * $one_pattern_height;   //общий метраж без рисунка
  69.             }elseif((float)$fit_ph ){
  70.                 $all_quantity = $quantity_patterns * $one_pattern_height;   //общий метраж с рисунком
  71.             }else{
  72.                 echo json_encode(array('loadmsgerr'=>'Ошибка! Не указан размер подгона рисунка!'));
  73.  
  74.                 exit();
  75.             }
  76.  
  77.             $amount_p = $length_p / $one_pattern_height;
  78.  
  79.             if($size_width > 0.3 && ($material == 'бесшовные' || floor($amount_p) == 0)){
  80.                 $amount_r = ($S + 1) / $width_p; //количество рулонов обоев М2
  81.             } else {
  82.                 if ($size_width <= 0.3) {
  83.                     $amount_r = ceil($P / $length_p);
  84.                 } else {
  85.                     $amount_r = ceil( $quantity_patterns ) / floor( $amount_p );        //количество рулонов
  86.                 }
  87.             }
  88.  
  89.             switch ($format) {
  90.                 case 'json':
  91.                     return json_encode([
  92.                         'amount_r' => ceil($amount_r),
  93.                     ]);
  94.                     break;
  95.                 case 'integer':
  96.                     return ceil($amount_r);
  97.                     break;
  98.             }
  99.         }
  100.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement