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];
}
}