HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //home/temp/yarusvl.ru/api/Priladka.php
<?php
/**
 * Created by el.
 * @autor: el
 * @pakage: el
 * @version: 0.1 13.09.18 12:58
 * Date: 13.09.18
 */


require_once('Mgc.php');

class Priladka extends Mgc
{


    public function calcID($id,$num=1){
         $priladka = new stdClass;



              $sql = " SELECT * FROM __priladka WHERE id = ? ";
               $sql = $this->db->placehold($sql, $id);


      //var_dump($sql);
          $peil = $this->db->query($sql);
          $peil = $this->db->results();
      //var_dump($peil/**/);
          if (!$peil) {
              $priladka->error = "NO DATA";
          } else {

              $ii = 0;
              foreach ($peil as $calc) {
                  if (!$ii) $bm = $calc->num;
                  $new_calc = $calc;
                  if ($num <= $calc->num) break;

                  $ii++;
              }

              $replace = $this->getReplace($new_calc->price, $num, $new_calc->num, 1.5, 1.5, false);

              $appOriginalPrice = $this->useFormula($new_calc->formula, $replace);

              $priladka->sum = $appOriginalPrice;
              $priladka->new_calc = $new_calc;

          }

          return $priladka;
     }

    public function calc($md5_cat,$md5_subcat,$num=1,$colors='',$sizes=''){
        $priladka = new stdClass;


        if($colors && $sizes){
             $sql = " SELECT * FROM __priladka WHERE md5_cat LIKE ? AND md5_subcat LIKE  ?  AND colors  LIKE ?  AND `size` LIKE ?  ORDER BY num ASC ";
              $sql = $this->db->placehold($sql, $md5_cat, $md5_subcat, $colors, $sizes);
         }elseif($colors){
             $sql = " SELECT * FROM __priladka WHERE md5_cat LIKE ? AND md5_subcat LIKE  ?  AND  `size` LIKE ?  ORDER BY num ASC ";
              $sql = $this->db->placehold($sql, $md5_cat, $md5_subcat,  $sizes);
         }elseif($sizes){
             $sql = " SELECT * FROM __priladka WHERE md5_cat LIKE ? AND md5_subcat LIKE  ?  AND  `size` LIKE ?  ORDER BY num ASC ";
              $sql = $this->db->placehold($sql, $md5_cat, $md5_subcat,  $sizes);
         }else{
            $sql = " SELECT * FROM __priladka WHERE md5_cat LIKE ? AND md5_subcat LIKE  ?  ORDER BY num ASC ";
                        $sql = $this->db->placehold($sql, $md5_cat, $md5_subcat);
        }

    // var_dump($sql);
         $peil = $this->db->query($sql);
         $peil = $this->db->results();
     //var_dump($peil/**/);
         if (!$peil) {
             $priladka->error = "NO DATA";
         } else {

             $ii = 0;
             foreach ($peil as $calc) {
                 if (!$ii) $bm = $calc->num;
                 $new_calc = $calc;
                 if ($num <= $calc->num) break;

                 $ii++;
             }

             $replace = $this->getReplace($new_calc->price, $num, $new_calc->num, 1.5, 1.5, false);

             $appOriginalPrice = $this->useFormula($new_calc->formula, $replace);

             $priladka->sum = $appOriginalPrice;
             $priladka->new_calc = $new_calc;

         }

         return $priladka;
    }

    public function getPriladka(){
        $this->db->query("SELECT * FROM __priladka ");
        return $this->db->results();
    }

    public function useFormula($formula, $replace, $print = false)
    {
        $search = array_keys($replace);
        $formula = mb_strtolower($formula);
         $search  = array_map("mb_strtolower",$search);
         $replace = array_map("mb_strtolower",$replace);
        $start = '';
        $sum = 0;

        if (strstr($formula, 'если') === false) {
            $start = '$sum=';
            $end = ';';
        } else {
            $end = ';}';
        }

        $formula = str_replace($search, $replace, $formula);
        if ($print) return $start . $formula . $end;
        eval ($start . $formula . $end);

        return (float)$sum;
    }







    public function getReplace($appPrice = 1.5, $limit = 1, $limitMin = 2, $productPrice = 1.5, $customPrice = 1.5, $isResetConstants = false)
    {


        $variables = [
            'а' => $appPrice,
            'б' => $limit,
            'бм' => $limitMin,
            'п' => 0,
            'сб=' => '',
            'если' => 'if(',
            ',' => '',
            'то' => ') { $sum=',
            'иначе' => ';} else { $sum=',
            'спз' => $customPrice
        ];



        $constants = [];

        $consts = $this->translations->get_translation("constants");
           $consts = explode("\n",$consts);
           $c = array();
           foreach ($consts as $const){
               $const = explode("=",$const);
 if(sizeof($const)==2){
     $constants[trim($const[0])] = trim($const[1]);
 }
           }


        //	$cacheFrontend->saveData($keyCache, $constants, 60 * 60 * 24 * 30);
        //}

        // -- Сливаем переменные с константами в один массив
        $replace = array_merge($variables, $constants);
        // -- -- -- --

        mb_internal_encoding('UTF-8');

        // -- Сортируем массив по длине индекса в порядке убывания
        $keys = array_map('mb_strlen', array_keys($replace));
        array_multisort($keys, SORT_DESC, $replace);
        // -- -- -- --

        return $replace;
    }



    function addCart($item_id,$nanesenie_id,$dops=''){
        $_SESSION['nanesenie_cart'][$item_id][$nanesenie_id] = $dops;
    }

    function removeCart($item_id,$nanesenie_id){
        unset($_SESSION['nanesenie_cart'][$item_id][$nanesenie_id]);
    }

    function clearCart($item_id){
        unset($_SESSION['nanesenie_cart'][$item_id]);
    }
    function clearCartAll(){
        unset($_SESSION['nanesenie_cart']);
    }
    function getCart($item_id){
        return $_SESSION['nanesenie_cart'][$item_id];
    }


}