Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 104.89 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: 5 звезд
  5.  * Date: 12.12.2018
  6.  * Time: 13:18
  7.  */
  8.  
  9. namespace Sers;
  10. use PDO;
  11. use Exception;
  12. require_once 'PHPExcel.php';
  13.  
  14.  
  15. class Sers
  16. {
  17.     public $dbs;
  18.     /****************PDO соединение с базой mySQL********************************/
  19.     function __construct($user, $pass, $host, $db){
  20.         $opt = [
  21.             PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
  22.             PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_BOTH,
  23.             PDO::ATTR_EMULATE_PREPARES   => false,
  24.         ];
  25.         $charset = 'utf8';
  26.         $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  27.         try {
  28.         $this->dbs = new PDO($dsn, $user, $pass, $opt);
  29.         } catch (Exception $e) {
  30.         $GLOBALS['error']="Связь не установлена";
  31.         }
  32.     }
  33.     /********************Получить все категории********************************/
  34.     public function get_typ($id=false, $data=false){
  35.         if (empty($id)) {
  36.             if (!empty($data)){
  37.                 $data=$this->replace_attr($data);
  38.                 $r = $this->dbs->prepare('SELECT * FROM typs as c, tovar as t, prixod as p WHERE c.id=t.id_typ AND t.id=p.id_t AND p.data=:d GROUP BY c.nazv ORDER BY c.nazv DESC;');
  39.                 $r->execute([':d'=>$data]);
  40.             }else {
  41.                 $r = $this->dbs->prepare('SELECT * FROM typs ORDER BY nazv DESC;');
  42.                 $r->execute();
  43.             }
  44.             $i = 0;
  45.             foreach ($r as $res) {
  46.                 $result[$i] = ['id' => $res[0], 'nazv' => $res[1]];
  47.                 $i++;
  48.             }
  49.             return $result;
  50.         }else{
  51.             $id=$this->replace_attr($id);
  52.             $r=$this->dbs->prepare('SELECT * FROM typs WHERE id=:i;');
  53.             $r->execute([':i'=>$id]);
  54.             foreach ($r as $res){
  55.                 $result=['id'=>$res['id'], 'nazv'=>$res['nazv']];
  56.             }
  57.             return $result;
  58.         }
  59.     }
  60.     /*********************Поиск товара**************************************/
  61.     public function get_tov_search($search){
  62.         $search=$this->replace_attr_search($search);
  63.         #print $search."<hr>";
  64.        $r=$this->dbs->prepare('SELECT * FROM tovar AS t, kol AS k, typs AS tp WHERE t.id_kol=k.id and t.id_typ=tp.id and t.visibl<>0 and (naz LIKE :search1 OR art LIKE :search2 OR color LIKE :search3 OR siz LIKE :search4) ORDER BY t.naz ASC;');
  65.         $r->execute([':search1'=>$search, ':search2'=>$search, ':search3'=>$search, ':search4'=>$search]);
  66.         #$r->debugDumpParams();
  67.        $i=0;
  68.         foreach ($r as $res){
  69.             $result[$i] = [
  70.                 'id'=>$res[0],
  71.                 'id_typ'=>$res['id_typ'],
  72.                 'id_kol'=>$res['id_kol'],
  73.                 'art'=>$res['art'],
  74.                 'naz'=>$res['naz'],
  75.                 'mat'=>$res['mat'],
  76.                 'forma'=>$res['forma'],
  77.                 'color'=>$res['color'],
  78.                 'aer'=>$res['aer'],
  79.                 'diver'=>$res['diver'],
  80.                 'izl'=>$res['izl'],
  81.                 'siz'=>$res['siz'],
  82.                 'stil'=>$res['stil'],
  83.                 'meh'=>$res['meh'],
  84.                 'mont'=>$res['mont'],
  85.                 'tpod'=>$res['tpod'],
  86.                 'upr'=>$res['upr'],
  87.                 'naznach'=>$res['naznach'],
  88.                 'kompl'=>$res['kompl'],
  89.                 'garant'=>$res['garant'],
  90.                 'foto'=>$res['foto'],
  91.                 'foto1'=>$res['foto1'],
  92.                 'opis'=>$res['opis'],
  93.                 'cena'=>$res['cena'],
  94.                 'visibl'=>$res['visibl']
  95.             ];
  96.             $i++;
  97.         }
  98.         return $result;
  99.     }
  100.     /******************Вывод всего товара test************************************/
  101.     public function get_all_tovtest($art=false, $visibl){
  102.         if (empty($art)) {
  103.             $visibl = $this->replace_attr($visibl);
  104.             if ($visibl == 3) {
  105.                 $r = $this->dbs->prepare('SELECT * FROM tovar_test as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id ORDER BY t.art ASC;');
  106.                 $r->execute();
  107.             } else {
  108.                 $r = $this->dbs->prepare('SELECT * FROM tovar_test as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.visibl=:v ORDER BY t.art ASC;');
  109.                 $r->execute([':v' => $visibl]);
  110.             }
  111.         }else{
  112.             $art=$this->replace_attr($art);
  113.             $visibl = $this->replace_attr($visibl);
  114.             $r = $this->dbs->prepare('SELECT * FROM tovar_test as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.visibl=:v AND t.art=:a ORDER BY t.art ASC;');
  115.             $r->execute([':v' => $visibl, ':a'=>$art]);
  116.         }
  117.         if ($r->rowCount()!=0){
  118.             $i=0;
  119.             foreach ($r as $res){
  120.                 $result[$i]=[
  121.                     'id'=>$res[0],
  122.                     'id_typ'=>$res['id_typ'],
  123.                     'id_kol'=>$res['id_kol'],
  124.                     'art'=>$res['art'],
  125.                     'naz_t'=>$res['naz'],
  126.                     'naz_k'=>$res['nazvs'],
  127.                     'naz_c'=>$res['nazv'],
  128.                     'mat'=>$res['mat'],
  129.                     'forma'=>$res['forma'],
  130.                     'color'=>$res['color'],
  131.                     'aer'=>$res['aer'],
  132.                     'diver'=>$res['diver'],
  133.                     'izl'=>$res['izl'],
  134.                     'siz'=>$res['siz'],
  135.                     'stil'=>$res['stil'],
  136.                     'meh'=>$res['meh'],
  137.                     'mont'=>$res['mont'],
  138.                     'tpod'=>$res['tpod'],
  139.                     'upr'=>$res['upr'],
  140.                     'naznach'=>$res['naznach'],
  141.                     'kompl'=>$res['kompl'],
  142.                     'garant'=>$res['garant'],
  143.                     'foto'=>$res['foto'],
  144.                     'foto1'=>$res['foto1'],
  145.                     'opis'=>$res['opis'],
  146.                     'cena'=>$res['cena'],
  147.                     'visibl'=>$res['visibl']
  148.                 ];
  149.                 $i++;
  150.             }
  151.             return $result;
  152.         }else $GLOBALS['error']="Список товара пуст";
  153.  
  154.     }
  155.     /******Вывод всего товара для нового прайса в соответствии с требованиями*************************/
  156.     public function get_price_tov($id_kol, $id_typ, $nazv, $data=false){
  157.         $id_kol=$this->replace_attr($id_kol);
  158.         $id_typ=$this->replace_attr($id_typ);
  159.         $nazv=$this->replace_attr($nazv);
  160.         if (!empty($data)){
  161.             $mas=[
  162.                 '3'=>'art',
  163.                 'mat'=>'Материал: ',
  164.                 'forma'=>'Форма: ',
  165.                 'color'=>'Цвет: ',
  166.                 'aer'=>'Аэратор: ',
  167.                 'diver'=>'Дивертор: ',
  168.                 'izl'=>'Излив: ',
  169.                 'siz'=>'Размер: ',
  170.                 'stil'=>'Стилистика: ',
  171.                 'meh'=>'Механизм: ',
  172.                 'mont'=>'Монтаж: ',
  173.                 'tpod'=>'Тип подводки: ',
  174.                 'upr'=>'Управление: ',
  175.                 'naznach'=>'Назначение: ',
  176.                 'kompl'=>'Комплектация: ',
  177.                 'garant'=>'Гарантия: ',
  178.                 'foto'=>'foto',
  179.                 'foto1'=>'foto1',
  180.                 'opis'=>'Описание: ',
  181.                 '23'=>'cena',
  182.                 '31'=>'cena_china',
  183.                 '30'=>'kolvo',
  184.                 '29'=>'data'
  185.             ];
  186.         }else
  187.         $mas=[
  188.             'art'=>'art',
  189.             'mat'=>'Материал: ',
  190.             'forma'=>'Форма: ',
  191.             'color'=>'Цвет: ',
  192.             'aer'=>'Аэратор: ',
  193.             'diver'=>'Дивертор: ',
  194.             'izl'=>'Излив: ',
  195.             'siz'=>'Размер: ',
  196.             'stil'=>'Стилистика: ',
  197.             'meh'=>'Механизм: ',
  198.             'mont'=>'Монтаж: ',
  199.             'tpod'=>'Тип подводки: ',
  200.             'upr'=>'Управление: ',
  201.             'naznach'=>'Назначение: ',
  202.             'kompl'=>'Комплектация: ',
  203.             'garant'=>'Гарантия: ',
  204.             'foto'=>'foto',
  205.             'foto1'=>'foto1',
  206.             'opis'=>'Описание: ',
  207.             'cena'=>'cena',
  208.         ];
  209.         if (!empty($data)){
  210.             $r = $this->dbs->prepare('SELECT * FROM tovar as t, prixod as p WHERE t.id_kol=:id_kol and t.id_typ=:id_typ and t.naz=:nazv and t.id=p.id_t and p.data=:d ORDER BY t.art;');
  211.             $r->execute([':id_kol' => $id_kol, ':id_typ' => $id_typ, ':nazv' => $nazv, ':d'=>$data]);
  212.         }else {
  213.             $r = $this->dbs->prepare('SELECT * FROM tovar WHERE id_kol=:id_kol and id_typ=:id_typ and naz=:nazv ORDER BY art;');
  214.             $r->execute([':id_kol' => $id_kol, ':id_typ' => $id_typ, ':nazv' => $nazv]);
  215.         }
  216.         if ($r->rowCount()!=0){
  217.             $i=0;
  218.             foreach ($r as $res) {
  219.                 foreach ($res as $key => $value) {
  220.                     if (!empty($value)) {
  221.                         if (isset($mas[$key])) {
  222.                             $result[$i][$mas[$key]] =$value;
  223.                         }
  224.                     }
  225.                 }
  226.                 $i++;
  227.             }
  228.             return $result;
  229.         }
  230.  
  231.     }
  232.     /************Вывод всего товара с коллекцей и категорией по приходу*******************************/
  233.     public function in_tov($data){
  234.         $data=$this->replace_attr($data);
  235.         $r=$this->dbs->prepare('SELECT * FROM tovar as t, typs as c, kol as k, prixod as p WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.id=p.id_t AND p.data=:d ORDER BY t.art ASC;');
  236.         $r->execute([':d'=>$data]);
  237.         if ($r->rowCount()!=0){
  238.             $i=0;
  239.             foreach ($r as $res){
  240.                 $result[$i]=[
  241.                     'id'=>$res[0],
  242.                     'id_typ'=>$res['id_typ'],
  243.                     'id_kol'=>$res['id_kol'],
  244.                     'art'=>$res[3],
  245.                     'naz_t'=>$res['naz'],
  246.                     'naz_k'=>$res['nazvs'],
  247.                     'naz_c'=>$res['nazv'],
  248.                     'mat'=>$res['mat'],
  249.                     'forma'=>$res['forma'],
  250.                     'color'=>$res['color'],
  251.                     'aer'=>$res['aer'],
  252.                     'diver'=>$res['diver'],
  253.                     'izl'=>$res['izl'],
  254.                     'siz'=>$res['siz'],
  255.                     'stil'=>$res['stil'],
  256.                     'meh'=>$res['meh'],
  257.                     'mont'=>$res['mont'],
  258.                     'tpod'=>$res['tpod'],
  259.                     'upr'=>$res['upr'],
  260.                     'naznach'=>$res['naznach'],
  261.                     'kompl'=>$res['kompl'],
  262.                     'garant'=>$res['garant'],
  263.                     'foto'=>$res['foto'],
  264.                     'foto1'=>$res['foto1'],
  265.                     'opis'=>$res['opis'],
  266.                     'cena'=>$res[23],
  267.                     'cena_china'=>$res[35],
  268.                     'kolvo'=>$res[34],
  269.                     'data'=>$res[33],
  270.                     'visibl'=>$res['visibl']
  271.                 ];
  272.             }
  273.             return $result;
  274.         }
  275.     }
  276.     /******************Вывод всего товара с коллекцей и категорией************************************/
  277.     public function get_all_tov($art=false, $visibl){
  278.         if (empty($art)) {
  279.             $visibl = $this->replace_attr($visibl);
  280.             if ($visibl == 3) {
  281.                 $r = $this->dbs->prepare('SELECT * FROM tovar as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id ORDER BY t.art ASC;');
  282.                 $r->execute();
  283.             } else {
  284.                 $r = $this->dbs->prepare('SELECT * FROM tovar as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.visibl=:v ORDER BY t.art ASC;');
  285.                 $r->execute([':v' => $visibl]);
  286.             }
  287.         }else{
  288.             $art=$this->replace_attr($art);
  289.             $visibl = $this->replace_attr($visibl);
  290.             if ($visibl==3){
  291.                 $r = $this->dbs->prepare('SELECT * FROM tovar as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.art=:a ORDER BY t.art ASC;');
  292.                 $r->execute([':a'=>$art]);
  293.             }else {
  294.                 $r = $this->dbs->prepare('SELECT * FROM tovar as t, typs as c, kol as k WHERE t.id_typ=c.id AND t.id_kol=k.id AND t.visibl=:v AND t.art=:a ORDER BY t.art ASC;');
  295.                 $r->execute([':v' => $visibl, ':a' => $art]);
  296.             }
  297.         }
  298.         if ($r->rowCount()!=0){
  299.             $i=0;
  300.             foreach ($r as $res){
  301.                 $result[$i]=[
  302.                     'id'=>$res[0],
  303.                     'id_typ'=>$res['id_typ'],
  304.                     'id_kol'=>$res['id_kol'],
  305.                     'art'=>$res['art'],
  306.                     'naz_t'=>$res['naz'],
  307.                     'naz_k'=>$res['nazvs'],
  308.                     'naz_c'=>$res['nazv'],
  309.                     'mat'=>$res['mat'],
  310.                     'forma'=>$res['forma'],
  311.                     'color'=>$res['color'],
  312.                     'aer'=>$res['aer'],
  313.                     'diver'=>$res['diver'],
  314.                     'izl'=>$res['izl'],
  315.                     'siz'=>$res['siz'],
  316.                     'stil'=>$res['stil'],
  317.                     'meh'=>$res['meh'],
  318.                     'mont'=>$res['mont'],
  319.                     'tpod'=>$res['tpod'],
  320.                     'upr'=>$res['upr'],
  321.                     'naznach'=>$res['naznach'],
  322.                     'kompl'=>$res['kompl'],
  323.                     'garant'=>$res['garant'],
  324.                     'foto'=>$res['foto'],
  325.                     'foto1'=>$res['foto1'],
  326.                     'opis'=>$res['opis'],
  327.                     'cena'=>$res['cena'],
  328.                     'visibl'=>$res['visibl']
  329.                 ];
  330.                 $i++;
  331.             }
  332.             return $result;
  333.         }else $GLOBALS['error']="Список товара пуст";
  334.  
  335.     }
  336.     /*********************Вывод товара соответствующей коллекции**************************************/
  337.     public function get_tov_kol($id_kol, $not_search, $order){
  338.         if ($order=='')$order='t.naz ASC';
  339.         if ($order=='rand')$order='RAND() LIMIT 1';
  340.         $id_kol=$this->replace_attr($id_kol);
  341.         if ($not_search!='')$not_search=$this->replace_attr_search($not_search);else $not_search=$this->replace_attr($not_search);
  342.         #print "{ ".$id_kol." - ".$not_search." - ".$order." }";
  343.        $r=$this->dbs->prepare('SELECT * FROM tovar AS t, kol AS k, typs AS tp WHERE t.id_kol=k.id and t.id_typ=tp.id and t.visibl<>0 and t.id_kol=:kol and t.foto NOT LIKE :search ORDER BY '.$order.';');
  344.         $r->execute([':kol'=>$id_kol, ':search'=>$not_search]);
  345.         $i=0;
  346.         foreach ($r as $res){
  347.             $result[$i] = [
  348.                 'id'=>$res[0],
  349.                 'id_typ'=>$res['id_typ'],
  350.                 'id_kol'=>$res['id_kol'],
  351.                 'art'=>$res['art'],
  352.                 'naz'=>$res['naz'],
  353.                 'mat'=>$res['mat'],
  354.                 'forma'=>$res['forma'],
  355.                 'color'=>$res['color'],
  356.                 'aer'=>$res['aer'],
  357.                 'diver'=>$res['diver'],
  358.                 'izl'=>$res['izl'],
  359.                 'siz'=>$res['siz'],
  360.                 'stil'=>$res['stil'],
  361.                 'meh'=>$res['meh'],
  362.                 'mont'=>$res['mont'],
  363.                 'tpod'=>$res['tpod'],
  364.                 'upr'=>$res['upr'],
  365.                 'naznach'=>$res['naznach'],
  366.                 'kompl'=>$res['kompl'],
  367.                 'garant'=>$res['garant'],
  368.                 'foto'=>$res['foto'],
  369.                 'foto1'=>$res['foto1'],
  370.                 'opis'=>$res['opis'],
  371.                 'cena'=>$res['cena'],
  372.                 'visibl'=>$res['visibl']
  373.             ];
  374.             $i++;
  375.         }
  376.         return $result;
  377.     }
  378.     /*************************Вывод товара соответствующий ID*****************************************/
  379.     public function get_tov($id){
  380.         $id=$this->replace_attr($id);
  381.         $r=$this->dbs->prepare('SELECT * FROM tovar AS t, kol AS k, typs AS tp WHERE t.id_kol=k.id and t.id_typ=tp.id and t.visibl<>0 and t.id=:id LIMIT 1;');
  382.         $r->execute([':id'=>$id]);
  383.         //$r->debugDumpParams();
  384.         foreach ($r as $res){
  385.             $result[0] = [
  386.                 'id'=>$res[0],
  387.                 'id_typ'=>$res['id_typ'],
  388.                 'id_kol'=>$res['id_kol'],
  389.                 'art'=>$res['art'],
  390.                 'naz'=>$res['naz'],
  391.                 'mat'=>$res['mat'],
  392.                 'forma'=>$res['forma'],
  393.                 'color'=>$res['color'],
  394.                 'aer'=>$res['aer'],
  395.                 'diver'=>$res['diver'],
  396.                 'izl'=>$res['izl'],
  397.                 'siz'=>$res['siz'],
  398.                 'stil'=>$res['stil'],
  399.                 'meh'=>$res['meh'],
  400.                 'mont'=>$res['mont'],
  401.                 'tpod'=>$res['tpod'],
  402.                 'upr'=>$res['upr'],
  403.                 'naznach'=>$res['naznach'],
  404.                 'kompl'=>$res['kompl'],
  405.                 'garant'=>$res['garant'],
  406.                 'foto'=>$res['foto'],
  407.                 'foto1'=>$res['foto1'],
  408.                 'opis'=>$res['opis'],
  409.                 'cena'=>$res['cena'],
  410.                 'visibl'=>$res['visibl'],
  411.                 'nazv'=>$res['nazv'],
  412.                 'nazvs'=>$res['nazvs']
  413.             ];
  414.         }
  415.         return $result;
  416.     }
  417.     /*********************Склонение имен**************************************/
  418.     public function num_decline( $number, $titles, $param2 = '', $param3 = '' ){
  419.  
  420.         if( is_string($titles) )
  421.             $titles = preg_split('~,\s*~', $titles );
  422.  
  423.         if( count($titles) < 3 )
  424.             $titles = [ func_get_arg(1), func_get_arg(2), func_get_arg(3) ];
  425.  
  426.         $cases = [2, 0, 1, 1, 1, 2];
  427.  
  428.         $intnum = abs( intval( strip_tags( $number ) ) );
  429.  
  430.         return $number .' '. $titles[ ($intnum % 100 > 4 && $intnum % 100 < 20) ? 2 : $cases[min($intnum % 10, 5)] ];
  431.     }
  432.     /*********************Вывод товара соответствующей категории**************************************/
  433.     public function get_tov_typ($id_typ, $not_search, $order){
  434.         if ($order=='')$order='t.naz ASC';
  435.         if ($order=='rand')$order='RAND() LIMIT 1';
  436.         $id_typ=$this->replace_attr($id_typ);
  437.         if ($not_search!='')$not_search=$this->replace_attr_search($not_search);else $not_search=$this->replace_attr($not_search);
  438.         //print "{-".$id_typ."-".$not_search."-}";
  439.         $r=$this->dbs->prepare('SELECT * FROM tovar AS t, kol AS k, typs AS tp WHERE t.id_kol=k.id and t.id_typ=tp.id and t.visibl<>0 and t.id_typ=:typ and foto NOT LIKE :search ORDER BY '.$order.';');
  440.         //print 'SELECT * FROM tovar AS t, kol AS k, typs AS tp WHERE t.id_kol=k.id and t.id_typ=tp.id and t.id_typ=:typ and foto NOT LIKE :search ORDER BY '.$order.';';
  441.         $r->execute([':typ'=>$id_typ, ':search'=>$not_search]);
  442.         //$r->debugDumpParams();
  443.         $i=0;
  444.         foreach ($r as $res){
  445.             $result[$i] = [
  446.                 'id'=>$res[0],
  447.                 'id_typ'=>$res['id_typ'],
  448.                 'id_kol'=>$res['id_kol'],
  449.                 'art'=>$res['art'],
  450.                 'naz'=>$res['naz'],
  451.                 'mat'=>$res['mat'],
  452.                 'forma'=>$res['forma'],
  453.                 'color'=>$res['color'],
  454.                 'aer'=>$res['aer'],
  455.                 'diver'=>$res['diver'],
  456.                 'izl'=>$res['izl'],
  457.                 'siz'=>$res['siz'],
  458.                 'stil'=>$res['stil'],
  459.                 'meh'=>$res['meh'],
  460.                 'mont'=>$res['mont'],
  461.                 'tpod'=>$res['tpod'],
  462.                 'upr'=>$res['upr'],
  463.                 'naznach'=>$res['naznach'],
  464.                 'kompl'=>$res['kompl'],
  465.                 'garant'=>$res['garant'],
  466.                 'foto'=>$res['foto'],
  467.                 'foto1'=>$res['foto1'],
  468.                 'opis'=>$res['opis'],
  469.                 'cena'=>$res['cena'],
  470.                 'visibl'=>$res['visibl'],
  471.                 'nazv'=>$res['nazv'],
  472.                 'nazvs'=>$res['nazvs']
  473.                 ];
  474.             $i++;
  475.         }
  476.         return $result;
  477.     }
  478.     /***************************В корзину****************************************/
  479.     public function bay($id, $user){
  480.         $r=$this->dbs->prepare('INSERT INTO recycler(id_kl, id_tov, data) VALUES (:users, :id, now());');
  481.         $id=$this->replace_attr($id);
  482.         $user=$this->replace_attr($user);
  483.         if ($r->execute([':users'=>$user, ':id'=>$id])){
  484.             $GLOBALS['success']="Товар успешно добавлен в корзину";
  485.         }else $GLOBALS['error']="Произошла ошибка при добавлении товара в корзину";
  486.     }
  487.     /*********************В корзину в один клик**********************************/
  488.     public function bay_one($id){
  489.         $r=$this->dbs->prepare('INSERT INTO one_click(id_tov, zakaz) VALUES(:id, :zakaz);');
  490.         $id=$this->replace_attr($id);
  491.         $zakaz=strtoupper(substr($_COOKIE['unique'],1,15));
  492.         if (trim($zakaz)!='') {
  493.             if ($r->execute([':id' => $id, ':zakaz' => $zakaz])) {
  494.                 $GLOBALS['success']="Товар успешно добавлен в корзину";
  495.             } else $GLOBALS['error']="Произошла ошибка при добавлении товара в корзину";
  496.         }
  497.     }
  498.     /********************Получить все коллекции********************************/
  499.     public function get_kol($id=false){
  500.         if (empty($id)) {
  501.             $r = $this->dbs->prepare('SELECT * FROM kol ORDER BY nazvs ASC;');
  502.             $r->execute();
  503.             $i = 0;
  504.             foreach ($r as $res) {
  505.                 $result[$i] = ['id' => $res['id'], 'nazv' => $res['nazvs']];
  506.                 $i++;
  507.             }
  508.             return $result;
  509.         }else{
  510.             $id=$this->replace_attr($id);
  511.             $r=$this->dbs->prepare('SELECT * FROM kol WHERE id=:i;');
  512.             $r->execute([':i'=>$id]);
  513.             foreach ($r as $res){
  514.                 $result=['id'=>$res['id'], 'nazv'=>$res['nazvs']];
  515.             }
  516.             return $result;
  517.         }
  518.     }
  519.     /*********************Получить список заказов ONE**********************************/
  520.     public function get_zone($id=false){
  521.         if (!empty($id)){
  522.  
  523.         }else{
  524.             $r = $this->dbs->prepare('SELECT fio, tel, mail, adres, zakaz, status FROM one_click WHERE zakaz<>"" GROUP BY fio, tel, mail, adres, zakaz, status;');
  525.             $r->execute();
  526.             $i=0;
  527.             foreach ($r as $res){
  528.                 $result[$i]=['fio'=>$res['fio'], 'tel'=>$res['tel'], 'mail'=>$res['mail'], 'adres'=>$res['adres'], 'zakaz'=>$res['zakaz'], 'status'=>$res['status']];
  529.                 $i++;
  530.             }
  531.             return $result;
  532.         }
  533.     }
  534.     /***********************Получить список заказов************************************/
  535.     public function get_zak($id=false){
  536.         if (!empty($id)) {
  537.             $id = $this->replace_attr($id);
  538.             $r = $this->dbs->prepare('SELECT zakaz, status FROM recycler WHERE status>0 and id_kl=:i GROUP BY zakaz, status;');
  539.             $r->execute([':i' => $id]);
  540.             $i = 0;
  541.             foreach ($r as $res) {
  542.                 $result[$i] = ['zakaz' => $res['zakaz'], 'status' => $res['status']];
  543.                 $i++;
  544.             }
  545.             return $result;
  546.         }else{
  547.             $r = $this->dbs->prepare('SELECT r.zakaz, r.status, u.id, u.login FROM recycler as r, users as u WHERE r.id_kl=u.id GROUP BY zakaz, status;');
  548.             $r->execute();
  549.             $i = 0;
  550.             foreach ($r as $res){
  551.                 $result[$i] = ['zakaz' => $res['zakaz'], 'status' => $res['status'], 'id_kl'=>$res['id'], 'login'=>$res['login']];
  552.                 $i++;
  553.             }
  554.             return $result;
  555.         }
  556.     }
  557.     /*********************Получить содержимое корзины**********************************/
  558.     public function get_korz($user, $status, $zak=false)
  559.     {
  560.         $user = $this->replace_attr($user);
  561.         $status = $this->replace_attr($status);
  562.         if (empty($zak)) {
  563.             $r = $this->dbs->prepare('select t.art, t.naz, count(r.id_tov) as kol, (count(r.id_tov)*t.cena) as suma, t.cena, r.status, r.id_kl from tovar as t, recycler as r where r.id_tov=t.id and r.id_kl=:u and r.status=:s GROUP BY t.art;');
  564.             $r->execute([':u' => $user, ':s' => $status]);
  565.             $i = 0;
  566.         } else {
  567.             $zak = $this->replace_attr($zak);
  568.             $r = $this->dbs->prepare('select t.art, t.naz, count(r.id_tov) as kol, (count(r.id_tov)*t.cena) as suma, t.cena, r.status, r.id_kl from tovar as t, recycler as r where r.id_tov=t.id and r.id_kl=:users and r.status=:status and r.zakaz=:zakaz GROUP BY t.art;');
  569.             $r->execute([':users' => $user, ':status' => $status, ':zakaz' => $zak]);
  570.         }
  571.         $i = 0;
  572.         foreach ($r as $res) {
  573.             $result[$i] = ['art' => $res['art'], 'naz' => $res['naz'], 'kol' => $res['kol'], 'suma' => $res['suma'], 'cena' => $res['cena'], 'status' => $res['status'], 'id_kl' => $res['id_kl']];
  574.             $i++;
  575.         }
  576.         return $result;
  577.     }
  578.     /**************************Удаление заказа*****************************************/
  579.     public function del_korz($user=false, $status=false, $zakaz=false){
  580.         if (!empty($zakaz)){
  581.             $zakaz=$this->replace_attr($zakaz);
  582.             $r = $this->dbs->prepare('DELETE FROM recycler WHERE zakaz=:z;');
  583.             if ($r->execute([':z'=>$zakaz])){$GLOBALS['success']="Заказ успешно удален!";}else $GLOBALS['error']="Произошла ошибка при удалении заказа";
  584.         }else{
  585.             $user=$this->replace_attr($user);
  586.             $status=$this->replace_attr($status);
  587.             $r = $this->dbs->prepare('DELETE FROM recycler WHERE id_kl=:u and status=:s;');
  588.             if ($r->execute([':s'=>$status, ':u'=>$user])){$GLOBALS['success']="Заказ успешно удален!";}else $GLOBALS['error']="Произошла ошибка при удалении заказа";
  589.         }
  590.     }
  591.     /*************************Удаление товара******************************************/
  592.     public function del_tovtest($id){
  593.         $id=$this->replace_attr($id);
  594.         $r=$this->dbs->prepare('DELETE FROM tovar_test WHERE id=:i;');
  595.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Товар успешно удален";}else $GLOBALS['error']="Произошла ошибка при удалении товара";
  596.     }
  597.     /*************************Удаление товара******************************************/
  598.     public function del_tov($id){
  599.         $id=$this->replace_attr($id);
  600.         $r=$this->dbs->prepare('DELETE FROM tovar WHERE id=:i;');
  601.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Товар успешно удален";}else $GLOBALS['error']="Произошла ошибка при удалении товара";
  602.     }
  603.     /************************Добавление товара*****************************************/
  604.     public function add_tov($mas){
  605.     $str='INSERT INTO tovar SET ';
  606.     $mas=array_diff($mas, array('', NULL, false));
  607.     $r=$this->dbs->prepare('SELECT * FROM tovar WHERE art=:a LIMIT 1;');
  608.     $mas['art']=$this->replace_attr($mas['art']);
  609.     $r->execute([':a'=>$mas['art']]);
  610.     if ($r->rowCount()==0) {
  611.         foreach ($mas as $key => $value) {
  612.             if (($key=='id_typ') || ($key=='id_kol')){
  613.                 if ($value[0]=='{') {
  614.                     $value = explode("{", $value);
  615.                     $value = explode("}", $value[1]);
  616.                     $value = $value[0];
  617.                 }
  618.             }
  619.             $value = $this->replace_attr($value);
  620.             $str .= $key . "='" . $value . "', ";
  621.         }
  622.         $str .= ";";
  623.         $str = str_replace(", ;", ";", $str);
  624.         $r=$this->dbs->prepare($str);
  625.         if ($r->execute()){$GLOBALS['success']="Товар успешно добавлен";}else $GLOBALS['error']="Произошла ошибка при добавлении товара";
  626.     }else $GLOBALS['error']="Товар с данным артикулом уже существует";
  627.     }
  628.     /******************Редактирование товара по прайсу test*********************************/
  629.     public function edit_price_test($mas){
  630.         $str='UPDATE tovar_test SET ';
  631.         $mas = array_diff($mas, array('', NULL, false));
  632.         foreach ($mas as $key => $value){
  633.             $value=$this->replace_attr($value);
  634.             if ($key!='id') {
  635.                 $str .= $key . "='" . $value . "', ";
  636.             }
  637.             if ($key=='id') $id=$value;
  638.         }
  639.         $str.="WHERE id='".$id."'";
  640.         $str=str_replace(", WHERE", " WHERE", $str);
  641.         $r=$this->dbs->prepare($str);
  642.         if ($r->execute()){$GLOBALS['success']="Данные о товаре успешно изменены";}else $GLOBALS['error']="Произошла ошибка при редактировании товара";
  643.     }
  644.     /******************Редактирование товара по прайсу*********************************/
  645.     public function edit_price_tov($mas){
  646.         $str='UPDATE tovar SET ';
  647.         $mas = array_diff($mas, array('', NULL, false));
  648.         foreach ($mas as $key => $value){
  649.             $value=$this->replace_attr($value);
  650.             if ($key!='id') {
  651.                 $str .= $key . "='" . $value . "', ";
  652.             }
  653.             if ($key=='id') $id=$value;
  654.         }
  655.         $str.="WHERE id='".$id."'";
  656.         $str=str_replace(", WHERE", " WHERE", $str);
  657.         $r=$this->dbs->prepare($str);
  658.         if ($r->execute()){$GLOBALS['success']="Данные о товаре успешно изменены";}else $GLOBALS['error']="Произошла ошибка при редактировании товара";
  659.     }
  660.     /************************Удаление заказа One***************************************/
  661.     public function delete_one($zakaz){
  662.         $zakaz=$this->replace_attr($zakaz);
  663.         $r=$this->dbs->prepare('delete from one_click where zakaz=:zakaz;');
  664.         if ($r->execute([':zakaz'=>$zakaz])){$GLOBALS['success']='Заказ успешно удален';}else $GLOBALS['error']='Произошла ошибка при удалении заказа';
  665.     }
  666.     /*************************Оформление заказа****************************************/
  667.     public function update_korz($id=false, $status, $zakaz=false, $f=false, $november=false){
  668.         if (!empty($id)) {
  669.             $id = $this->replace_attr($id);
  670.             $status = $this->replace_attr($status);
  671.             $zakaz = strtoupper(substr($_COOKIE['unique'], 1, 15));
  672.             $r = $this->dbs->prepare('UPDATE recycler SET status=:s, zakaz=:z WHERE status=:st and id_kl=:i;');
  673.             if ($r->execute([':s' => ($status + 1), ':z' => $zakaz, ':st' => $status, ':i' => $id])) {
  674.                 $GLOBALS['success']="Заказ успешно оформлен";
  675.             } else $GLOBALS['error']="Произошла ошибка при оформлении заказа";
  676.         }else{
  677.             $status = $this->replace_attr($status);
  678.             $zakaz = $this->replace_attr($zakaz);
  679.             $r = $this->dbs->prepare('UPDATE recycler SET status=:s WHERE zakaz=:z;');
  680.             if ($f=='0') {
  681.                 if ($status=='0'){
  682.                     if ($r->execute([':s' => $status, ':z' => $zakaz])) {
  683.                         $GLOBALS['success']="Заказ перенесен в корзину пользователя для редактирования";
  684.                     } else  $GLOBALS['error']="Произошла ошибка при отмене заказа";
  685.                 }else {
  686.                     if ($r->execute([':s' => $status, ':z' => $zakaz])) {
  687.                         $GLOBALS['success']="Заказ успешно отправлен";
  688.                     } else  $GLOBALS['error']="Произошла ошибка при отправке заказа";
  689.                 }
  690.             }else{
  691.                 if ($r->execute([':s' => $status, ':z' => $zakaz])) {
  692.                     $GLOBALS['success']="Получение заказа подтверждено";
  693.                 } else $GLOBALS['error']="Произошла ошибка при подтверждении получения заказа";
  694.             }
  695.         }
  696.     }
  697.     /********************Изменение статуса заказа One**********************************/
  698.     public function update_korz_one($zakaz, $status, $f){
  699.         $zakaz=$this->replace_attr($zakaz);
  700.         $status=$this->replace_attr($status);
  701.         $r=$this->dbs->prepare('UPDATE one_click SET status=:s WHERE zakaz=:z;');
  702.         if ($f==0){
  703.             if ($r->execute([':s'=>$status, ':z'=>$zakaz])){
  704.                 $GLOBALS['success']="Заказ успешно отправлен";
  705.             }else $GLOBALS['error']="Произошла ошибка при отправке заказа";
  706.         }else{
  707.             if ($r->execute([':s' => $status, ':z' => $zakaz])) {
  708.                 $GLOBALS['success']="Получение заказа подтверждено";
  709.             } else $GLOBALS['error']="Произошла ошибка при подтверждении получения заказа";
  710.         }
  711.     }
  712.     /***********************Оформление заказа One**************************************/
  713.     public function update_one($zakaz, $status, $respon, $fio=false, $tel=false, $mail=false, $adres=false){
  714.         $recaptcha=$respon['g-recaptcha-response'];
  715.         if(!empty($recaptcha)) {
  716.             $google_url = "https://www.google.com/recaptcha/api/siteverify";
  717.             $secret = '6Ld9134UAAAAAKDtW4t5WswxaNo6nRsT6UopGPSM';
  718.             $ip = $_SERVER['REMOTE_ADDR'];
  719.             $url = $google_url . "?secret=" . $secret . "&response=" . $recaptcha . "&remoteip=" . $ip;
  720.             $res = $this->getCurlData($url);
  721.             $res = json_decode($res, true);
  722.             //reCaptcha введена
  723.             if ($res['success']) {
  724.                 if ($status != '-1') {
  725.                     $status = $this->replace_attr($status);
  726.                     $zakaz = $this->replace_attr($zakaz);
  727.                     $r = $this->dbs->prepare('UPDATE one_click SET status=:status WHERE zakaz=:zakaz;');
  728.                     if ($r->execute([':status' => $status, ':zakaz' => $zakaz])) {
  729.                         $GLOBALS['success']='Статус заказа успешно изменен';
  730.                         echo "<script language=\"JavaScript\">setTimeout(function(){document.location.href = 'http://xzels.adiante.su';}, 3 * 1000);</script>";
  731.                     } else $GLOBALS['error']='Произошла ошибка при изменении статуса заказа';
  732.                 } else {
  733.                     $zakaz = $this->replace_attr($zakaz);
  734.                     $fio = $this->replace_attr($fio);
  735.                     $tel = $this->replace_attr($tel);
  736.                     $mail = $this->replace_attr($mail);
  737.                     $adres = $this->replace_attr($adres);
  738.                     $r = $this->dbs->prepare('UPDATE one_click SET fio=:fio, tel=:tel, mail=:mail, adres=:adres, status=1 WHERE zakaz=:zakaz;');
  739.                     if ($r->execute([':fio' => $fio, ':tel' => $tel, ':mail' => $mail, ':adres' => $adres, ':zakaz' => $zakaz])) {
  740.                         $GLOBALS['success']='Заказ успешно оформлен';
  741.                         echo "<script language=\"JavaScript\">setTimeout(function(){document.location.href = 'http://xzels.adiante.su';}, 3 * 1000);</script>";
  742.                     } else $GLOBALS['error']='Произошла ошибка при оформлении заказа';
  743.                 }
  744.             }else $GLOBALS['error']='Пожалуйста повторите ввод reCAPTCHA';
  745.         }else $GLOBALS['error']='Пожалуйста повторите ввод reCAPTCHA, она пустая';
  746.     }
  747.     /*******************Получить содержимое корзины One********************************/
  748.     public function get_korz_one($stat, $zakaz=false){
  749.         $stat=$this->replace_attr($stat);
  750.         if (empty($zakaz)){
  751.             $zakaz=strtoupper(substr($_COOKIE['unique'],1,15));
  752.         }else $zakaz=$this->replace_attr($zakaz);
  753.         $r=$this->dbs->prepare('select t.art, t.naz, count(o.id_tov) as kol, (count(o.id_tov)*t.cena) as suma, t.cena, o.status, o.fio, o.tel, o.mail, o.adres from tovar as t, one_click as o where o.id_tov=t.id and o.zakaz=:zakaz and o.status=:status GROUP BY t.art;');
  754.         $r->execute([':zakaz'=>$zakaz, ':status'=>$stat]);
  755.         #$r->debugDumpParams();
  756.        $i=0;
  757.         foreach ($r as $res){
  758.             $result[$i]=['art'=>$res['art'], 'naz'=>$res['naz'], 'kol'=>$res['kol'], 'suma'=>$res['suma'], 'cena'=>$res['cena'], 'fio'=>$res['fio'], 'tel'=>$res['tel'], 'status'=>$res['status'], 'mail'=>$res['mail'], 'adres'=>$res['adres']];
  759.             $i++;
  760.         }
  761.         return $result;
  762.     }
  763.     /*********************Изменить данные пользователя********************************/
  764.     public function update_user($id, $status=false, $pas=false, $nam=false, $tel=false, $mail=false, $adres=false, $org=false){
  765.         if (empty($status)){
  766.             $id=$this->replace_attr($id);
  767.             $nam=$this->replace_attr($nam);
  768.             $tel=$this->replace_attr($tel);
  769.             $mail=$this->replace_attr($mail);
  770.             $adres=$this->replace_attr($adres);
  771.             $org=$this->replace_attr($org);
  772.             if ($pas!=''){
  773.                 $pas=$this->replace_attr_md5($pas);
  774.                 $r=$this->dbs->prepare('UPDATE users set nam=:n, tel=:t, mail=:m, adres=:a, org=:o, pasw=:p WHERE id=:i');
  775.                 if ($r->execute([':n'=>$nam, ':t'=>$tel, ':m'=>$mail, ':a'=>$adres, ':o'=>$org, ':p'=>$pas, ':i'=>$id])){$GLOBALS['success']="Данные успешно обновлены";}else $GLOBALS['error']="Произошла ошибка обновления онформации о пользователе";
  776.             }else{
  777.                 $r=$this->dbs->prepare('UPDATE users set nam=:n, tel=:t, mail=:m, adres=:a, org=:o WHERE id=:i');
  778.                 if ($r->execute([':n'=>$nam, ':t'=>$tel, ':m'=>$mail, ':a'=>$adres, ':o'=>$org, ':i'=>$id])){$GLOBALS['success']="Данные успешно обновлены";}else $GLOBALS['error']="Произошла ошибка обновления онформации о пользователе";
  779.             }
  780.  
  781.         }else{
  782.             $id=$this->replace_attr($id);
  783.             $status=$this->replace_attr($status);
  784.             $r=$this->dbs->prepare('UPDATE users SET status=:s WHERE id=:i;');
  785.             if ($r->execute([':s'=>$status, ':i'=>$id])){$GLOBALS['success']="Статус пользователя успешно изменен";}else $GLOBALS['error']="Произошла ошибка при изменении статуса пользователя";
  786.         }
  787.     }
  788.     /***********************Изменить категорию товара*********************************/
  789.     public function edit_typ($id, $nazv){
  790.         if ($id[0]=='{') {
  791.             $id = explode("{", $id);
  792.             $id = explode("}", $id[1]);
  793.             $id=$id[0];
  794.         }
  795.         $id=$this->replace_attr($id);
  796.         $nazv=$this->replace_attr($nazv);
  797.         $r=$this->dbs->prepare('UPDATE typs SET nazv=:n WHERE id=:i;');
  798.         if ($r->execute([':n'=>$nazv, ':i'=>$id])){$GLOBALS['success']="Название категории успешно изменено";}else $GLOBALS['error']="Произошла ошибка при изменении названия категории";
  799.     }
  800.     /************************Удалить категорию товара*********************************/
  801.     public function del_typ($id){
  802.         if ($id[0]=='{') {
  803.             $id = explode("{", $id);
  804.             $id = explode("}", $id[1]);
  805.             $id=$id[0];
  806.         }
  807.         $id=$this->replace_attr($id);
  808.         $r=$this->dbs->prepare('DELETE FROM typs WHERE id=:i;');
  809.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Категория успешно удалена";}else $GLOBALS['error']="Произошла ошибка при удалении категории";
  810.     }
  811.     /***********************Добавить категорию товара*********************************/
  812.     public function insert_typ($nazv){
  813.         $nazv=$this->replace_attr($nazv);
  814.         $r=$this->dbs->prepare('INSERT INTO typs(nazv) values (:n);');
  815.         if ($r->execute([':n'=>$nazv])){$GLOBALS['success']="Категория товара успешно добавлена";}else $GLOBALS['error']="Произошла ошибка при добавлении категории товара";
  816.     }
  817.     /***********************Изменить коллекцию товара*********************************/
  818.     public function edit_kol($id, $nazv){
  819.         if ($id[0]=='{') {
  820.             $id = explode("{", $id);
  821.             $id = explode("}", $id[1]);
  822.             $id=$id[0];
  823.         }
  824.         $id=$this->replace_attr($id);
  825.         $nazv=$this->replace_attr($nazv);
  826.         $r=$this->dbs->prepare('UPDATE kol SET nazvs=:n WHERE id=:i;');
  827.         if ($r->execute([':n'=>$nazv, ':i'=>$id])){$GLOBALS['success']="Название коллекции успешно изменено";}else $GLOBALS['error']="Произошла ошибка при изменении названия коллекции";
  828.     }
  829.     /************************Удалить коллекцию товара*********************************/
  830.     public function del_kol($id){
  831.         if ($id[0]=='{') {
  832.             $id = explode("{", $id);
  833.             $id = explode("}", $id[1]);
  834.             $id=$id[0];
  835.         }
  836.         $id=$this->replace_attr($id);
  837.         $r=$this->dbs->prepare('DELETE FROM kol WHERE id=:i;');
  838.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Коллекция успешно удалена";}else $GLOBALS['error']="Произошла ошибка при удалении коллекции";
  839.     }
  840.     /***********************Добавить коллекцию товара*********************************/
  841.     public function insert_kol($nazv){
  842.         $nazv=$this->replace_attr($nazv);
  843.         $r=$this->dbs->prepare('INSERT INTO kol(nazvs) values (:n);');
  844.         if ($r->execute([':n'=>$nazv])){$GLOBALS['success']="Коллекция товара успешно добавлена";}else $GLOBALS['error']="Произошла ошибка при добавлении коллекции товара";
  845.     }
  846.     /***************************Добавить отзывов**************************************/
  847.     public function insert_otz($user, $otziv){
  848.         $user=$this->replace_attr($user);
  849.         $otziv=$this->replace_attr($otziv);
  850.         $r=$this->dbs->prepare('INSERT INTO otzivs(from_n, otziv, dat) VALUES(:u, :o, now());');
  851.         if ($r->execute([':u'=>$user, ':o'=>$otziv])){$GLOBALS['success']="Отзыв успешно добавлен";}else $GLOBALS['error']="Произошла ошибка при добавлении отзыва";
  852.     }
  853.     /************************Получить список отзывов**********************************/
  854.     public function get_otz($id=false){
  855.         if (empty($id)){
  856.             $r=$this->dbs->prepare('SELECT * FROM otzivs ORDER BY id DESC;');
  857.             $r->execute();
  858.             if (($r->rowCount())!=0){
  859.                 $i=0;
  860.                 foreach ($r as $res){
  861.                     $result[$i]=['id'=>$res['id'], 'user'=>$res['from_n'], 'otziv'=>$res['otziv'], 'dat'=>$res['dat']];
  862.                     $i++;
  863.                 }
  864.                 return $result;
  865.             }
  866.         }
  867.     }
  868.     /****************************Удалить отзыв****************************************/
  869.     public function delete_otz($id){
  870.         $id=$this->replace_attr($id);
  871.         $r=$this->dbs->prepare('DELETE FROM otzivs WHERE id=:i;');
  872.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Отзыв успешно удален";}else $GLOBALS['error']="Произошла ошибка при удалении отзыва";
  873.     }
  874.     /*********************Получить данные пользователя********************************/
  875.     public function get_user($id=false, $log=false){
  876.         if (empty($log)) {
  877.             if (!empty($id)) {
  878.                 if ($id[0] == '{') {
  879.                     $id = explode("{", $id);
  880.                     $id = explode("}", $id[1]);
  881.                     $id = $id[0];
  882.                 }
  883.                 $id = $this->replace_attr($id);
  884.                 $r = $this->dbs->prepare('SELECT * FROM users WHERE id=:id;');
  885.                 $r->execute(['id' => $id]);
  886.             } else {
  887.                 $r = $this->dbs->prepare('SELECT * FROM users;');
  888.                 $r->execute();
  889.             }
  890.             $i = 0;
  891.             foreach ($r as $res) {
  892.                 $result[$i] = ['id' => $res['id'], 'login' => $res['login'], 'nam' => $res['nam'], 'tel' => $res['tel'], 'adres' => $res['adres'], 'mail' => $res['mail'], 'status' => $res['status'], 'org' => $res['org']];
  893.                 $i++;
  894.             }
  895.             return $result;
  896.         }else {
  897.             $log = $this->replace_attr($log);
  898.             $r=$this->dbs->prepare('SELECT * FROM users WHERE login=:l');
  899.             $r->execute([':l'=>$log]);
  900.             if ($r->rowCount()!=0){
  901.                 foreach ($r as $res){
  902.                     $result['mail']=$res['mail'];
  903.                     $result['md']=$res['pasw'];
  904.                     $result['id']=$res['id'];
  905.                 }
  906.                 return $result;
  907.             }else $GLOBALS['error']="Пользователь с таким логином не существует";
  908.         }
  909.     }
  910.     /********************Получить рандомно 7 категорий********************************/
  911.     public function get_typ_rand(){
  912.         $r=$this->dbs->prepare('select * from typs ORDER BY RAND() LIMIT 7;');
  913.         $r->execute();
  914.         $i=0;
  915.         foreach ($r as $res){
  916.             $result[$i]=['id'=>$res['id'], 'nazv'=>$res['nazv']];
  917.             $i++;
  918.         }
  919.         return $result;
  920.     }
  921.     /************************Восстановление пароля*************************************/
  922.     public function remember($id, $md, $pas){
  923.         $id=$this->replace_attr($id);
  924.         $md=$this->replace_attr($md);
  925.         $r=$this->dbs->prepare('SELECT * FROM users WHERE id=:i AND pasw=:p;');
  926.         $r->execute([':i'=>$id, ':p'=>$md]);
  927.         if ($r->rowCount()!=0){
  928.             $pas=$this->replace_attr_md5($pas);
  929.             $r=$this->dbs->prepare('UPDATE users SET pasw=:pw WHERE id=:i;');
  930.             if ($r->execute([':pw'=>$pas, ':i'=>$id])){$GLOBALS['success']="Пароль успешно изменен";}else $GLOBALS['error']="Произошла ошибка при изменении пароля";
  931.         }
  932.     }
  933.     /********************Получить рандомно 11 коллекций********************************/
  934.     public function get_kol_rand(){
  935.         $r=$this->dbs->prepare('select * from kol ORDER BY RAND() LIMIT 11;');
  936.         $r->execute();
  937.         $i=0;
  938.         foreach ($r as $res){
  939.             $result[$i]=['id'=>$res['id'], 'nazvs'=>$res['nazvs']];
  940.             $i++;
  941.         }
  942.         return $result;
  943.     }
  944.     /****************************Авторизация******************************************/
  945.     public function autorization($login, $password){
  946.         $r=$this->dbs->prepare('select * from users where login=:login and pasw=:password');
  947.         $login = $this->replace_attr($login);
  948.         $password = $this->replace_attr_md5($password);
  949.         if ($r->execute([':login'=>$login, 'password'=>$password])){
  950.             foreach ($r as $res){
  951.                 $_SESSION['id'] = $res['id'];
  952.                 $_SESSION['login'] = $res['login'];
  953.                 $_SESSION['name'] = $res['nam'];
  954.                 $_SESSION['tel'] = $res['tel'];
  955.                 $_SESSION['status'] = $res['status'];
  956.                 $_SESSION['adres'] = $res['adres'];
  957.                 $_SESSION['mail'] = $res['mail'];
  958.                 $_SESSION['org'] = $res['org'];
  959.             }
  960.             $GLOBALS['success']="Добро пожаловать ".ucwords($_SESSION['login']);
  961.         }else $GLOBALS['error']="Связка логин/пароль не найдена в базе";
  962.     }
  963.     /***************************Выход************************************************************/
  964.     public function close_sessions(){
  965.         session_destroy();
  966.         echo "<script language='javascript'>document.location.replace(\"http://xzels.adiante.su\");</script>";
  967.     }
  968.     /***********************Удаление новости*****************************************************/
  969.     public function del_news($id){
  970.         if ($id[0] == '{') {
  971.             $id = explode("{", $id);
  972.             $id = explode("}", $id[1]);
  973.             $id = $id[0];
  974.         }
  975.         $id=$this->replace_attr($id);
  976.         $r=$this->dbs->prepare('DELETE FROM news WHERE id=:i;');
  977.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Новость успешно удалена";}else $GLOBALS['error']="Произошла ошибка при удалении новости";
  978.     }
  979.     /********************Редактирование новости**************************************************/
  980.     public function edit_news($id, $mas){
  981.         if ($id[0] == '{') {
  982.             $id = explode("{", $id);
  983.             $id = explode("}", $id[1]);
  984.             $id = $id[0];
  985.         }
  986.         $id=$this->replace_attr($id);
  987.         $str='UPDATE news SET ';
  988.         foreach ($mas as $key => $value){
  989.             $value=$this->replace_attr($value);
  990.             if ($key!='id') {
  991.                 $str .= $key . "='" . $value . "', ";
  992.             }
  993.             if ($key=='id') $id=$value;
  994.         }
  995.         $str.='data=now() ';
  996.         $str.="WHERE id='".$id."'";
  997.         $str=str_replace(", WHERE", " WHERE", $str);
  998.         $r=$this->dbs->prepare($str);
  999.         if ($r->execute()){$GLOBALS['success']="Новость успешно изменена";}else $GLOBALS['error']="Произошла ошибка при изменении новости";
  1000.     }
  1001.     /******************Получение списка новостей*************************************************/
  1002.     public function get_news($id=false){
  1003.         if (empty($id)){
  1004.             $r=$this->dbs->prepare('SELECT * FROM news ORDER BY id DESC;');
  1005.             $r->execute();
  1006.         }else{
  1007.  
  1008.             if ($id[0] == '{') {
  1009.                 $id = explode("{", $id);
  1010.                 $id = explode("}", $id[1]);
  1011.                 $id = $id[0];
  1012.             }
  1013.             $id=$this->replace_attr($id);
  1014.             $r=$this->dbs->prepare('SELECT * FROM news WHERE id=:i;');
  1015.             $r->execute([':i'=>$id]);
  1016.         }
  1017.         if ($r->rowCount()!=0) {
  1018.             $i=0;
  1019.             foreach ($r as $res) {
  1020.                /* $result[$key] = $value;*/
  1021.                 $result[$i]=[
  1022.                 'id'=>$res['id'],
  1023.                 'foto'=>$res['foto'],
  1024.                 'new'=>$res['new'],
  1025.                 'data'=>$res['data'],
  1026.                 'new_n'=>$res['new_n'],
  1027.                 'user'=>$res['user']
  1028.                 ];
  1029.                 $i++;
  1030.             }
  1031.             return $result;
  1032.         }else $GLOBALS['error']="Нет новостей";
  1033.     }
  1034.     /*********************Добавление новости*****************************************************/
  1035.     public function add_news($mas){
  1036.         $str='INSERT INTO news SET ';
  1037.         $mas=array_diff($mas, array('', NULL, false));
  1038.             foreach ($mas as $key => $value) {
  1039.                 $value = $this->replace_attr($value);
  1040.                 $str .= $key . "='" . $value . "', ";
  1041.             }
  1042.             $str .= "data=now();";
  1043.             $str = str_replace(", ;", ";", $str);
  1044.             $r=$this->dbs->prepare($str);
  1045.             if ($r->execute()){$GLOBALS['success']="Новость успешно добавлена";}else $GLOBALS['error']="Произошла ошибка при добавлении новости";
  1046.     }
  1047.     /*********************Преобразование URL*****************************************************/
  1048.     public function getCurlData($url)
  1049.     {
  1050.         $curl = curl_init();
  1051.         curl_setopt($curl, CURLOPT_URL, $url);
  1052.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  1053.         curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  1054.         curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
  1055.         $curlData = curl_exec($curl);
  1056.         curl_close($curl);
  1057.         return $curlData;
  1058.     }
  1059.     /****************Преобразование полей для SQL********************************/
  1060.     public function replace_attr($atr){
  1061.         $result = substr($this->dbs->quote(trim(strtolower($atr))), 1, strlen($this->dbs->quote(trim(strtolower($atr)))) - 2);
  1062.         return $result;
  1063.     }
  1064.     /****************Преобразование полей %LIKE% для SQL********************************/
  1065.     public function replace_attr_search($atr){
  1066.         $result = substr($this->dbs->quote("%".trim(strtolower($atr))."%"), 1, strlen($this->dbs->quote("%".trim(strtolower($atr))."%")) - 2);
  1067.         return $result;
  1068.     }
  1069.     /****************Преобразование полей md5 для SQL********************************/
  1070.     public function replace_attr_md5($atr){
  1071.         $result = substr($this->dbs->quote(md5(trim(strtolower($atr)))), 1, strlen($this->dbs->quote(md5(trim(strtolower($atr))))) - 2);
  1072.         return $result;
  1073.     }
  1074.     /**********************Получение скидок******************************************/
  1075.     public function gets_sales($user=false){
  1076.         if (empty($user)){
  1077.             $r=$this->dbs->prepare('SELECT * FROM sales;');
  1078.             $r->execute();
  1079.         }else{
  1080.             if ($user[0]=='{'){
  1081.                 $user = explode("{", $user);
  1082.                 $user = explode("}", $user[1]);
  1083.                 $user = $user[0];
  1084.             }
  1085.             $user=$this->replace_attr($user);
  1086.  
  1087.             $r=$this->dbs->prepare('SELECT * FROM sales WHERE id_cl=:i');
  1088.             $r->execute([':i'=>$user]);
  1089.  
  1090.         }
  1091.         $i=0;
  1092.         if ($r->rowCount()!=0) {
  1093.  
  1094.             foreach ($r as $res) {
  1095.                 $result[$i] = [
  1096.                     'id' => $res['id'],
  1097.                     'id_cl' => $res['id_cl'],
  1098.                     'sale' => $res['sale']
  1099.                 ];
  1100.                 $i++;
  1101.             }
  1102.             return $result;
  1103.         }else{
  1104.             $result[0]['sale']='0';
  1105.             $result[0]['user']='no';
  1106.             return $result;
  1107.         }
  1108.     }
  1109.     /*********************Назначение  скидок*****************************************/
  1110.     public function add_sales($use, $sale){
  1111.         if ($use[0]=='{') {
  1112.             $use = explode("{", $use);
  1113.             $use = explode("}", $use[1]);
  1114.             $use = $use[0];
  1115.         }
  1116.         $use=$this->replace_attr($use);
  1117.         $sale=$this->replace_attr($sale);
  1118.         $r=$this->gets_sales($use);
  1119.         if (isset($r[0]['user'])){
  1120.             $r=$this->dbs->prepare('INSERT INTO sales(id_cl, sale) VALUES (:u, :s)');
  1121.             if ($r->execute([':u'=>$use, ':s'=>$sale])){$GLOBALS['success']="Скидка успешно назначена";}else $GLOBALS['error']="Произошла ошибка при назначении скидки";
  1122.         }else{
  1123.             $r=$this->dbs->prepare('UPDATE sales SET sale=:s WHERE id_cl=:u;');
  1124.             if ($r->execute([':s'=>$sale,':u'=>$use])){$GLOBALS['success']="Скидка успешно назначена";}else $GLOBALS['error']="Произошла ошибка при назначении скидки";
  1125.         }
  1126.  
  1127.     }
  1128.  
  1129.     /*****************Удаление данных пользователя***********************************/
  1130.     public function del_user($id){
  1131.         $id=$this->replace_attr($id);
  1132.         $r=$this->dbs->prepare('DELETE FROM users WHERE id=:i');
  1133.         if ($r->execute([':i'=>$id])){$GLOBALS['success']="Пользователь успешно удален";}else $GLOBALS['error']="Произошла ошибка при удалении пользователя";
  1134.     }
  1135.     /**************Редактирование данных пользователя********************************/
  1136.     public function edit_user($mas){
  1137.         $str='UPDATE users SET ';
  1138.         $mas = array_diff($mas, array('', NULL, false));
  1139.         foreach ($mas as $key => $value){
  1140.             if ($key!='id') {
  1141.             if ($key!='pasw') {
  1142.                 $value= $this->replace_attr($value);
  1143.             }else{
  1144.                 $value = $this->replace_attr_md5($value);
  1145.             }
  1146.                 $str .= $key . "='" . $value . "', ";
  1147.             }else $id=$this->replace_attr($value);
  1148.  
  1149.         }
  1150.         $str.="WHERE id='".$id."'";
  1151.         $str=str_replace(", WHERE", " WHERE", $str);
  1152.         $r=$this->dbs->prepare($str);
  1153.         if ($r->execute()){$GLOBALS['success']="Данные пользователя успешно изменены";}else $GLOBALS['error']="Произошла ошибка при изменении данных пользователя";
  1154.     }
  1155.     /*****************Удаление товара из заказа*******************************************/
  1156.     public function del_china($id){
  1157.         $id=$this->replace_attr($id);
  1158.         $r=$this->dbs->prepare('DELETE FROM zakaz WHERE id=:i;');
  1159.         if ($r->execute([':i'=>$id])){$GLOBALS['success']='Позиция заказа успешно удалена';}else $GLOBALS['error']='Произошла ошибка удаления позиции заказа';
  1160.     }
  1161.     /****************Для совершения заказа товара*****************************************/
  1162.     public function ins_zak($mas){
  1163.         $str="INSERT INTO zakaz SET ";
  1164.             if (isset ($mas['foto'])){
  1165.                 $str.="art = '".$this->replace_attr($mas['foto'])."', ";
  1166.                 $r=$this->dbs->prepare('SELECT foto FROM tovar WHERE art=:a LIMIT 1;');
  1167.                 $r->execute([':a'=>$mas['foto']]);
  1168.                 foreach ($r as $res){
  1169.                     $str.="foto = '".$res['foto']."', ";
  1170.                 }
  1171.             }
  1172.             if ($key='foto1'){
  1173.                 $r=$this->dbs->prepare('SELECT foto FROM tovar WHERE art=:a LIMIT 1;');
  1174.                 $mas['foto1']=$this->replace_attr($mas['foto1']);
  1175.                 $r->execute([':a'=>$mas['foto1']]);
  1176.                 foreach ($r as $res){
  1177.                     $str.="foto1 = '".$res['foto']."', ";
  1178.                 }
  1179.             }
  1180.             if ($key='foto2'){
  1181.                 $r=$this->dbs->prepare('SELECT foto FROM tovar WHERE art=:a LIMIT 1;');
  1182.                 $mas['foto2']=$this->replace_attr($mas['foto2']);
  1183.                 $r->execute([':a'=>$mas['foto2']]);
  1184.                 foreach ($r as $res){
  1185.                     $str.="foto2 = '".$res['foto']."', ";
  1186.                 }
  1187.             }
  1188.             if ($key='foto3'){
  1189.                 $r=$this->dbs->prepare('SELECT foto FROM tovar WHERE art=:a LIMIT 1;');
  1190.                 $mas['foto3']=$this->replace_attr($mas['foto3']);
  1191.                 $r->execute([':a'=>$mas['foto3']]);
  1192.                 foreach ($r as $res){
  1193.                     $str.="foto3 = '".$res['foto']."', ";
  1194.                 }
  1195.             }
  1196.             if ($key='foto4'){
  1197.                 $r=$this->dbs->prepare('SELECT foto FROM tovar WHERE art=:a LIMIT 1;');
  1198.                 $mas['foto4']=$this->replace_attr($mas['foto4']);
  1199.                 $r->execute([':a'=>$mas['foto4']]);
  1200.                 foreach ($r as $res){
  1201.                     $str.="foto4 = '".$res['foto']."', ";
  1202.                 }
  1203.  
  1204.             if (isset($mas['kolvo'])){
  1205.                 $str.="kolvo = '".$this->replace_attr($mas['kolvo'])."', ";
  1206.             }
  1207.             if (isset($mas['suma'])){
  1208.                 $str.="suma = '".$this->replace_attr($mas['suma'])."', ";
  1209.             }
  1210.         }
  1211.         $str.="z";
  1212.         $str=str_replace(', z', ';', $str);
  1213.         $r=$this->dbs->prepare($str);
  1214.         #print $str;
  1215.        if ($r->execute()){$GLOBALS['success']='Товар в заказ добавлен';}else $GLOBALS['error']='Произошла ошибка при добавлении товара в заказ';
  1216.     }
  1217.     /*****************Для получения списка заказа*****************************************/
  1218.     public function get_zakaz($lim=false){
  1219.         $this->dbs->setAttribute( PDO::ATTR_CASE, PDO::CASE_NATURAL );
  1220.         if (!empty($lim)){
  1221.             $r=$this->dbs->prepare('SELECT * FROM zakaz ORDER BY art DESC;');
  1222.         }else $r=$this->dbs->prepare('SELECT * FROM zakaz ORDER BY id DESC LIMIT 10;');
  1223.  
  1224.         $r->execute();
  1225.         if ($r->rowCount()!=0){
  1226.             $i=0;
  1227.             foreach ($r as $res) {
  1228.                 foreach ($res as $key => $value){
  1229.                     $result[$i][$key] =$value;
  1230.                 }
  1231.                 $i++;
  1232.             }
  1233.             return $result;
  1234.         }
  1235.     }
  1236.     /************Для прайса получение коллекций и категорий**************************/
  1237.     public function get_typ_kol($id, $data=false){
  1238.         $id=$this->replace_attr($id);
  1239.         if (!empty($data)) {
  1240.             $data = $this->replace_attr($data);
  1241.             $r=$this->dbs->prepare('select k.nazvs, k.id as id_kol, t.id_typ as id_typ, t.naz, count(t.naz) as schet from tovar as t, kol as k, prixod as p where p.id_t=t.id AND p.data=:d AND t.id_typ=:id and t.id_kol=k.id group by t.naz, k.nazvs ORDER by k.nazvs ASC;');
  1242.             $r->execute([':d'=>$data, ':id'=>$id]);
  1243.         }else{
  1244.         $r=$this->dbs->prepare('select k.nazvs, k.id as id_kol, t.id_typ as id_typ, t.naz, count(t.naz) as schet from tovar as t, kol as k where t.id_typ=:id and t.id_kol=k.id group by t.naz, k.nazvs ORDER by k.nazvs ASC;');
  1245.         $r->execute([':id'=>$id]);
  1246.         }
  1247.  
  1248.         if ($r->rowCount()!=0){
  1249.             $i=0;
  1250.             foreach ($r as $res){
  1251.                 $result[$i]=[
  1252.                     'nazv_kol'=>$res['nazvs'],
  1253.                     'id_kol'=>$res['id_kol'],
  1254.                     'id_typ'=>$res['id_typ'],
  1255.                     'nazv_tov'=>$res['naz'],
  1256.                     'schet'=>$res['schet']
  1257.                 ];
  1258.                 $i++;
  1259.             }
  1260.             return $result;
  1261.         }
  1262.     }
  1263.     /************************Регистрация*********************************************/
  1264.     public function insert_user($respon){
  1265.         try {
  1266.             $recaptcha=$respon['g-recaptcha-response'];
  1267.             if(!empty($recaptcha)) {
  1268.                 $google_url = "https://www.google.com/recaptcha/api/siteverify";
  1269.                 $secret = '6Ld9134UAAAAAKDtW4t5WswxaNo6nRsT6UopGPSM';
  1270.                 $ip = $_SERVER['REMOTE_ADDR'];
  1271.                 $url = $google_url . "?secret=" . $secret . "&response=" . $recaptcha . "&remoteip=" . $ip;
  1272.                 $res = $this->getCurlData($url);
  1273.                 $res = json_decode($res, true);
  1274.                 //reCaptcha введена
  1275.                 if ($res['success']) {
  1276.                     $r['log'] = $this->replace_attr($respon['log']);
  1277.                     $r['pas'] = $this->replace_attr_md5($respon['pas']);
  1278.                     $r['nam'] = $this->replace_attr($respon['nam']);
  1279.                     $r['tel'] = $this->replace_attr($respon['tel']);
  1280.                     $r['mail'] = $this->replace_attr($respon['mail']);
  1281.                     $r['org'] = $this->replace_attr($respon['org']);
  1282.                     $r['status'] = 0;
  1283.                     $r['adres'] = $this->replace_attr($respon['adres']);
  1284.                     $q = $this->dbs->prepare("select * from users where login=:login;");
  1285.                     $q->execute([':login' => $r['log']]);
  1286.                     if ($q->rowCount() != 0) {
  1287.                         $GLOBALS['error']="Пользователь с таким логином уже существует";
  1288.                     } else {
  1289.                         #print "insert into users(login, pasw, nam, tel, adres, mail, status, org) values(" . $r['log'] . ", " . $r['pas'] . ", " . $r['nam'] . ", " . $r['tel'] . ", " . $r['adres'] . ", " . $r['mail'] . ", " . $r['status'] . ", " . $r['org'] . ");";
  1290.                        $s = $this->dbs->prepare("insert into users(login, pasw, nam, tel, adres, mail, status, org) values(:login, :pasw, :nam, :tel, :adres, :mail, :status, :org);");
  1291.                         if ($s->execute([':login' => $r['log'], ':pasw' => $r['pas'], ':nam' => $r['nam'], ':tel' => $r['tel'], ':adres' => $r['adres'], ':mail' => $r['mail'], ':status' => $r['status'], ':org' => $r['org']])) {
  1292.                             $GLOBALS['success']="Пользователь успешно зарегистрирован";
  1293.                         } else{$GLOBALS['error']="Произошла ошибка при регистрации пользователя";}
  1294.                     }
  1295.                 }else{$GLOBALS['error']="Пожалуйста повторите ввод reCAPTCHA";}
  1296.             }else{$GLOBALS['error']="Пожалуйста повторите ввод reCAPTCHA";}
  1297.         } catch (Exception $e) {
  1298.             print_r($e);
  1299.         }
  1300.  
  1301.  
  1302.     }
  1303.     /**********************Печать заказа на Китай******************************/
  1304.     public function xls_china(){
  1305.         $china = new \PHPEXcel();
  1306.         $china->setActiveSheetIndex(0);
  1307.         $active_sheet = $china->getActiveSheet();
  1308.         $active_sheet->getPageSetup()->setOrientation(\PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
  1309.         $china->getActiveSheet()->getPageSetup()->setFitToPage(true);
  1310.         $china->getActiveSheet()->getPageSetup()->setFitToWidth(1);
  1311.         $china->getActiveSheet()->getPageSetup()->setFitToHeight(0);
  1312.         $active_sheet->getPageSetup()->SetPaperSize(\PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
  1313.         $active_sheet->setTitle("Заказ");
  1314.         $active_sheet->getPageMargins()->setTop(1);
  1315.         $active_sheet->getPageMargins()->setRight(0.75);
  1316.         $active_sheet->getPageMargins()->setLeft(0.75);
  1317.         $active_sheet->getPageMargins()->setBottom(1);
  1318.  
  1319.         $active_sheet->getHeaderFooter()->setOddHeader("&C".AG_NAME.": заказ");
  1320.         $active_sheet->getHeaderFooter()->setOddFooter('&L&B'.$active_sheet->getTitle().'&RСтраница &P из &N');
  1321.         $china->getDefaultStyle()->getFont()->setName('Arial');
  1322.         $china->getDefaultStyle()->getFont()->setSize(8);
  1323.  
  1324.         $active_sheet->getColumnDimension('A')->setWidth(33);
  1325.         $active_sheet->getColumnDimension('B')->setWidth(20);
  1326.         $active_sheet->getColumnDimension('C')->setWidth(33);
  1327.         $active_sheet->getColumnDimension('D')->setWidth(33);
  1328.         $active_sheet->getColumnDimension('E')->setWidth(33);
  1329.         $active_sheet->getColumnDimension('F')->setWidth(33);
  1330.         $active_sheet->getColumnDimension('G')->setWidth(20);
  1331.         $active_sheet->getColumnDimension('H')->setWidth(20);
  1332.  
  1333.         $active_sheet->setCellValue('H1','"'.AG_NAME.'"');
  1334.         $active_sheet->setCellValue('H2','Т. '.AG_PHONE1.', '.AG_PHONE2);
  1335.         $active_sheet->setCellValue('H3',AG_MAIL_SERVER);
  1336.         $china->getActiveSheet()->getCell('H3')->getHyperlink()->setUrl('mailto:'.AG_MAIL_SERVER);
  1337.         $active_sheet->setCellValue('H4',AG_MAIL_ADMIN);
  1338.         $china->getActiveSheet()->getCell('H4')->getHyperlink()->setUrl('mailto:'.AG_MAIL_ADMIN);
  1339.         $active_sheet->setCellValue('H5',AG_SERVER);
  1340.         $china->getActiveSheet()->getCell('H5')->getHyperlink()->setUrl('http://'.AG_SERVER);
  1341.  
  1342.         $active_sheet->getRowDimension('1')->setRowHeight(20);
  1343.         $active_sheet->getRowDimension('2')->setRowHeight(20);
  1344.         $active_sheet->getRowDimension('3')->setRowHeight(20);
  1345.         $active_sheet->getRowDimension('4')->setRowHeight(20);
  1346.         $active_sheet->getRowDimension('5')->setRowHeight(20);
  1347.  
  1348.         $active_sheet->mergeCells('A1:B5');
  1349.         $imagePath =  $_SERVER["DOCUMENT_ROOT"]."/img/img_xls.png";
  1350.         if (file_exists($imagePath)) {
  1351.             $logo1 = new \PHPExcel_Worksheet_Drawing();
  1352.             $logo1->setPath($imagePath);
  1353.             $logo1->setCoordinates("A1");
  1354.             $logo1->setOffsetX(15);
  1355.             $logo1->setOffsetY(15);
  1356.             $logo1->setWorksheet($active_sheet);
  1357.         }
  1358.  
  1359.         $active_sheet->mergeCells('D1:D5');
  1360.         $active_sheet->setCellValue('D1','Заказ');
  1361.         $active_sheet->mergeCells('F1:F5');
  1362.  
  1363.         $imagePath =  $_SERVER["DOCUMENT_ROOT"]."/img/gerb.png";
  1364.         if (file_exists($imagePath)) {
  1365.             $logo1 = new \PHPExcel_Worksheet_Drawing();
  1366.             $logo1->setPath($imagePath);
  1367.             $logo1->setWidthAndHeight(230,230);
  1368.             $logo1->setResizeProportional(true);
  1369.             $logo1->setCoordinates("F1");
  1370.             $logo1->setOffsetX(-25);
  1371.             $logo1->setOffsetY(0);
  1372.             $logo1->setWorksheet($active_sheet);
  1373.         }
  1374.  
  1375.         $active_sheet->mergeCells('A6:H6');
  1376.         $active_sheet->setCellValue('A6','Португальский производитель сантехники');
  1377.  
  1378.         $active_sheet->mergeCells('A7:G7');
  1379.         $active_sheet->setCellValue('A7','Дата создания заказа');
  1380.  
  1381.         $date = date('d-m-Y');
  1382.         $active_sheet->setCellValue('H7',$date);
  1383.         $active_sheet->getStyle('H7')
  1384.             ->getNumberFormat()->
  1385.             setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14);
  1386.  
  1387.         $active_sheet->setCellValue('A9','Изображение');
  1388.         $active_sheet->setCellValue('B9','Артикул');
  1389.         $active_sheet->setCellValue('C9','Фото1');
  1390.         $active_sheet->setCellValue('D9','Фото2');
  1391.         $active_sheet->setCellValue('E9','Фото3');
  1392.         $active_sheet->setCellValue('F9','Фото4');
  1393.         $active_sheet->setCellValue('G9','Количество');
  1394.         $active_sheet->setCellValue('H9','Сумма');
  1395.  
  1396.         /***************************Стили**************************************************/
  1397.         $style_wrap = [
  1398.             'borders'=>[
  1399.                 'outline' =>[
  1400.                     'style'=>\PHPExcel_Style_Border::BORDER_THICK
  1401.                 ],
  1402.                 'allborders'=>[
  1403.                     'style'=>\PHPExcel_Style_Border::BORDER_THIN,
  1404.                     'color' =>[
  1405.                         'rgb'=>'000000'
  1406.                     ]
  1407.                 ]
  1408.             ]
  1409.         ];
  1410.         $style_header =[
  1411.             'font'=>[
  1412.                 'bold' => true,
  1413.                 'name' => 'Times New Roman',
  1414.                 'size' => 16,
  1415.                 'color' =>[
  1416.                     'rgb' => 'FFFFFF'
  1417.                 ]
  1418.             ],
  1419.             'alignment' =>[
  1420.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_LEFT,
  1421.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1422.             ],
  1423.             'fill' =>[
  1424.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1425.                 'color'=>[
  1426.                     'rgb' => '000000'
  1427.                 ]
  1428.             ]
  1429.         ];
  1430.         $style_right =[
  1431.             'font'=>[
  1432.                 'bold' => true,
  1433.                 'name' => 'Times New Roman',
  1434.                 'size' => 8
  1435.             ],
  1436.             'alignment' =>[
  1437.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_RIGHT,
  1438.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1439.             ]
  1440.         ];
  1441.         $style_slogan =[
  1442.             'font'=>[
  1443.                 'bold' => true,
  1444.                 'italic' => true,
  1445.                 'name' => 'Times New Roman',
  1446.                 'size' => 16,
  1447.                 'color'=>[
  1448.                     'rgb' => '111111'
  1449.                 ]
  1450.             ],
  1451.             'alignment' =>[
  1452.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1453.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1454.             ],
  1455.             'fill' =>[
  1456.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1457.                 'color'=>[
  1458.                     'rgb' => 'fdfef1'
  1459.                 ]
  1460.             ],
  1461.             'borders' =>[
  1462.                 'bottom' =>[
  1463.                     'style'=>\PHPExcel_Style_Border::BORDER_THICK
  1464.                 ]
  1465.             ]
  1466.         ];
  1467.         $style_tdate =[
  1468.             'alignment' =>[
  1469.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_RIGHT,
  1470.             ],
  1471.             'fill' =>[
  1472.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1473.                 'color'=>[
  1474.                     'rgb' => 'fdfef1'
  1475.                 ]
  1476.             ],
  1477.             'borders' =>[
  1478.                 'right' =>[
  1479.                     'style'=>\PHPExcel_Style_Border::BORDER_NONE
  1480.                 ]
  1481.             ]
  1482.         ];
  1483.         $style_date =[
  1484.             'fill' =>[
  1485.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1486.                 'color'=>[
  1487.                     'rgb' => 'fdfef1'
  1488.                 ]
  1489.             ],
  1490.             'borders' =>[
  1491.                 'left' =>[
  1492.                     'style'=>\PHPExcel_Style_Border::BORDER_NONE
  1493.                 ]
  1494.             ],
  1495.         ];
  1496.         $style_hprice =[
  1497.             'alignment' =>[
  1498.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1499.             ],
  1500.             'fill' =>[
  1501.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1502.                 'color'=>[
  1503.                     'rgb' => 'a50505'
  1504.                 ]
  1505.             ],
  1506.             'font'=>[
  1507.                 'bold' => true,
  1508.                 'italic' => true,
  1509.                 'name' => 'Times New Roman',
  1510.                 'size' => 12,
  1511.                 'color'=>[
  1512.                     'rgb' => 'FFFFFF'
  1513.                 ]
  1514.             ],
  1515.         ];
  1516.         $style_typ = [
  1517.             'alignment' =>[
  1518.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1519.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER
  1520.             ],
  1521.             'fill' =>[
  1522.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1523.                 'color'=>[
  1524.                     'rgb' => 'a50505'
  1525.                 ]
  1526.             ],
  1527.             'font'=>[
  1528.                 'bold' => true,
  1529.                 'italic' => true,
  1530.                 'name' => 'Times New Roman',
  1531.                 'size' => 12,
  1532.                 'color'=>[
  1533.                     'rgb' => 'FFFFFF'
  1534.                 ]
  1535.             ],
  1536.         ];
  1537.         $style_naz = [
  1538.             'alignment' =>[
  1539.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1540.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER
  1541.             ],
  1542.             'fill' =>[
  1543.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1544.                 'color'=>[
  1545.                     'rgb' => '085906'
  1546.                 ]
  1547.             ],
  1548.             'font'=>[
  1549.                 'bold' => true,
  1550.                 'italic' => true,
  1551.                 'name' => 'Times New Roman',
  1552.                 'size' => 12,
  1553.                 'color'=>[
  1554.                     'rgb' => 'FFFFFF'
  1555.                 ]
  1556.             ],
  1557.         ];
  1558.         $active_sheet->getStyle('A6:H6')->applyFromArray($style_slogan);
  1559.         $active_sheet->getStyle('A7:G7')->applyFromArray($style_tdate);
  1560.         $active_sheet->getStyle('E7')->applyFromArray($style_date);
  1561.         $active_sheet->getStyle('A9:H9')->applyFromArray($style_hprice);
  1562.         /******************************************************************/
  1563.         $active_sheet->mergeCells('A8'.':E8');
  1564.         #$active_sheet->setCellValue('A8',ucwords($res['nazv']));
  1565.        $active_sheet->getStyle('A8'.':H8')->applyFromArray($style_typ);
  1566.         $china->getActiveSheet()->freezePane('A10');
  1567.         /******************************************************************/
  1568.         $china->getActiveSheet()->freezePane('A10');
  1569.  
  1570.         $row_start = 10;
  1571.         $i = 0;
  1572.         $schet=0;
  1573.         $r=$this->get_zakaz('1');
  1574.         foreach ($r as $res){
  1575.  
  1576.             $row_next = $row_start + $i;
  1577.             $active_sheet->getRowDimension($row_next)->setRowHeight(150);
  1578.             if ($res['foto'] != '') {
  1579.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $res['foto'];
  1580.             }else{
  1581.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/images/no-image.png";
  1582.             }
  1583.                 if (file_exists($imagePath)) {
  1584.                     $logo = new \PHPExcel_Worksheet_Drawing();
  1585.                     $logo->setPath($imagePath);
  1586.                     $logo->setWidthAndHeight(190, 190);
  1587.                     $logo->setResizeProportional(true);
  1588.                     $logo->setCoordinates("A" . $row_next);
  1589.                     $logo->setOffsetX(3);
  1590.                     $logo->setOffsetY(3);
  1591.                     $logo->setWorksheet($active_sheet);
  1592.                 }
  1593.  
  1594.             if (($res['foto1'] != 'images/no-image.png') && ($res['foto1'] != '')) {
  1595.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $res['foto1'];
  1596.                 if (file_exists($imagePath)) {
  1597.                     $logo = new \PHPExcel_Worksheet_Drawing();
  1598.                     $logo->setPath($imagePath);
  1599.                     $logo->setWidthAndHeight(190, 190);
  1600.                     $logo->setResizeProportional(true);
  1601.                     $logo->setCoordinates("C" . $row_next);
  1602.                     $logo->setOffsetX(3);
  1603.                     $logo->setOffsetY(3);
  1604.                     $logo->setWorksheet($active_sheet);
  1605.                 }
  1606.             }
  1607.             if (($res['foto2'] != 'images/no-image.png') && ($res['foto2'] != '')) {
  1608.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $res['foto2'];
  1609.                 if (file_exists($imagePath)) {
  1610.                     $logo = new \PHPExcel_Worksheet_Drawing();
  1611.                     $logo->setPath($imagePath);
  1612.                     $logo->setWidthAndHeight(190, 190);
  1613.                     $logo->setResizeProportional(true);
  1614.                     $logo->setCoordinates("D" . $row_next);
  1615.                     $logo->setOffsetX(3);
  1616.                     $logo->setOffsetY(3);
  1617.                     $logo->setWorksheet($active_sheet);
  1618.                 }
  1619.             }
  1620.             if (($res['foto3'] != 'images/no-image.png') && ($res['foto3'] != '')) {
  1621.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $res['foto3'];
  1622.                 if (file_exists($imagePath)) {
  1623.                     $logo = new \PHPExcel_Worksheet_Drawing();
  1624.                     $logo->setPath($imagePath);
  1625.                     $logo->setWidthAndHeight(190, 190);
  1626.                     $logo->setResizeProportional(true);
  1627.                     $logo->setCoordinates("E" . $row_next);
  1628.                     $logo->setOffsetX(3);
  1629.                     $logo->setOffsetY(3);
  1630.                     $logo->setWorksheet($active_sheet);
  1631.                 }
  1632.             }
  1633.             if (($res['foto4'] != 'images/no-image.png') && ($res['foto4'] != '')) {
  1634.                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $res['foto4'];
  1635.                 if (file_exists($imagePath)) {
  1636.                     $logo = new \PHPExcel_Worksheet_Drawing();
  1637.                     $logo->setPath($imagePath);
  1638.                     $logo->setWidthAndHeight(190, 190);
  1639.                     $logo->setResizeProportional(true);
  1640.                     $logo->setCoordinates("F" . $row_next);
  1641.                     $logo->setOffsetX(3);
  1642.                     $logo->setOffsetY(3);
  1643.                     $logo->setWorksheet($active_sheet);
  1644.                 }
  1645.             }
  1646.             $active_sheet->setCellValue('B'.$row_next,strtoupper($res['art']));
  1647.             $active_sheet->setCellValue('G'.$row_next,strtoupper($res['kolvo']));
  1648.             $active_sheet->setCellValue('H'.$row_next,strtoupper($res['suma']));
  1649.             $i++;
  1650.         }
  1651.         $active_sheet->getStyle('A1:H'.($i+10))->applyFromArray($style_wrap);
  1652.         $active_sheet->getStyle('A1:H'.($i+10))->getAlignment()->setWrapText(true);
  1653.         $active_sheet->getStyle('A1:H'.($i+10))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  1654.         $active_sheet->getStyle('H'.($row_start).':H'.($i+9))->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
  1655.  
  1656.  
  1657.         $active_sheet->getStyle('E'.($row_start+1).':H'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  1658.         $active_sheet->getStyle('E'.($row_start+1).':H'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1659.  
  1660.         $active_sheet->getStyle('B'.($row_start+1).':B'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  1661.         $active_sheet->getStyle('B'.($row_start+1).':B'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1662.         $active_sheet->getStyle('A1:H5')->applyFromArray($style_header);
  1663.         $active_sheet->getStyle('E1:H5')->applyFromArray($style_right);
  1664.         $active_sheet->mergeCells('A'.($i+10).':H'.($i+10));
  1665.         $active_sheet->getStyle('A'.($i+10).':H'.($i+10))->applyFromArray($style_hprice);
  1666.         $string="Итого: ".$this->num_decline(($i), "наименование, наименования, наименований");
  1667.         $active_sheet->setCellValue('A'.($i+10),$string);
  1668.  
  1669.         header("Content-Type:application/vnd.ms-excel");
  1670.         header("Content-Disposition:attachment;filename='" . AG_NAME . "-" . date('d-m-Y') . ".xls'");
  1671.         $objWriter1 = \PHPExcel_IOFactory::createWriter($china, 'Excel5');
  1672.         $objWriter1->save('php://output');
  1673.     }
  1674.     /************************Выбор дат поставок*******************************/
  1675.     public function get_date(){
  1676.         $r=$this->dbs->prepare('SELECT data FROM prixod GROUP BY data ORDER BY data DESC;');
  1677.         $r->execute();
  1678.         if ($r->rowCount()!=''){
  1679.             return $r;
  1680.         }else $GLOBALS['error']='Поставки отсутствуют';
  1681.     }
  1682.     /***********************Прайс лист поставок*******************************/
  1683.     /***********************Тестовый прайс лист*******************************/
  1684.     public function push_price($params=false, $type, $data=false){
  1685.         $objPHPExcel = new \PHPEXcel();
  1686.         $objPHPExcel->setActiveSheetIndex(0);
  1687.         $active_sheet = $objPHPExcel->getActiveSheet();
  1688.  
  1689.  
  1690. /***************************Стили**************************************************/
  1691.         $style_wrap = [
  1692.             'borders'=>[
  1693.                 'outline' =>[
  1694.                     'style'=>\PHPExcel_Style_Border::BORDER_THICK
  1695.                 ],
  1696.                 'allborders'=>[
  1697.                     'style'=>\PHPExcel_Style_Border::BORDER_THIN,
  1698.                     'color' =>[
  1699.                         'rgb'=>'000000'
  1700.                     ]
  1701.                 ]
  1702.             ]
  1703.         ];
  1704.         $style_header =[
  1705.             'font'=>[
  1706.                 'bold' => true,
  1707.                 'name' => 'Times New Roman',
  1708.                 'size' => 16,
  1709.                 'color' =>[
  1710.                     'rgb' => 'FFFFFF'
  1711.                 ]
  1712.             ],
  1713.             'alignment' =>[
  1714.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_LEFT,
  1715.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1716.             ],
  1717.             'fill' =>[
  1718.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1719.                 'color'=>[
  1720.                     'rgb' => '000000'
  1721.                 ]
  1722.             ]
  1723.         ];
  1724.  
  1725.         $style_right =[
  1726.             'font'=>[
  1727.                 'bold' => true,
  1728.                 'name' => 'Times New Roman',
  1729.                 'size' => 8
  1730.             ],
  1731.             'alignment' =>[
  1732.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_RIGHT,
  1733.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1734.             ]
  1735.         ];
  1736.         $style_slogan =[
  1737.             'font'=>[
  1738.                 'bold' => true,
  1739.                 'italic' => true,
  1740.                 'name' => 'Times New Roman',
  1741.                 'size' => 16,
  1742.                 'color'=>[
  1743.                     'rgb' => '111111'
  1744.                 ]
  1745.             ],
  1746.             'alignment' =>[
  1747.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1748.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER,
  1749.             ],
  1750.             'fill' =>[
  1751.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1752.                 'color'=>[
  1753.                     'rgb' => 'fdfef1'
  1754.                 ]
  1755.             ],
  1756.             'borders' =>[
  1757.                 'bottom' =>[
  1758.                     'style'=>\PHPExcel_Style_Border::BORDER_THICK
  1759.                 ]
  1760.             ]
  1761.         ];
  1762.         $style_tdate =[
  1763.             'alignment' =>[
  1764.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_RIGHT,
  1765.             ],
  1766.             'fill' =>[
  1767.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1768.                 'color'=>[
  1769.                     'rgb' => 'fdfef1'
  1770.                 ]
  1771.             ],
  1772.             'borders' =>[
  1773.                 'right' =>[
  1774.                     'style'=>\PHPExcel_Style_Border::BORDER_NONE
  1775.                 ]
  1776.             ]
  1777.         ];
  1778.         $style_date =[
  1779.             'fill' =>[
  1780.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1781.                 'color'=>[
  1782.                     'rgb' => 'fdfef1'
  1783.                 ]
  1784.             ],
  1785.             'borders' =>[
  1786.                 'left' =>[
  1787.                     'style'=>\PHPExcel_Style_Border::BORDER_NONE
  1788.                 ]
  1789.             ],
  1790.         ];
  1791.         $style_hprice =[
  1792.             'alignment' =>[
  1793.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1794.             ],
  1795.             'fill' =>[
  1796.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1797.                 'color'=>[
  1798.                     'rgb' => 'a50505'
  1799.                 ]
  1800.             ],
  1801.             'font'=>[
  1802.                 'bold' => true,
  1803.                 'italic' => true,
  1804.                 'name' => 'Times New Roman',
  1805.                 'size' => 12,
  1806.                 'color'=>[
  1807.                     'rgb' => 'FFFFFF'
  1808.                 ]
  1809.             ],
  1810.         ];
  1811.         $style_typ = [
  1812.             'alignment' =>[
  1813.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1814.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER
  1815.             ],
  1816.             'fill' =>[
  1817.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1818.                 'color'=>[
  1819.                     'rgb' => 'a50505'
  1820.                 ]
  1821.             ],
  1822.             'font'=>[
  1823.                 'bold' => true,
  1824.                 'italic' => true,
  1825.                 'name' => 'Times New Roman',
  1826.                 'size' => 12,
  1827.                 'color'=>[
  1828.                     'rgb' => 'FFFFFF'
  1829.                 ]
  1830.             ],
  1831.         ];
  1832.         $style_naz = [
  1833.             'alignment' =>[
  1834.                 'horizontal' => \PHPExcel_STYLE_ALIGNMENT::HORIZONTAL_CENTER,
  1835.                 'vertical' => \PHPExcel_STYLE_ALIGNMENT::VERTICAL_CENTER
  1836.             ],
  1837.             'fill' =>[
  1838.                 'type' => \PHPExcel_STYLE_FILL::FILL_SOLID,
  1839.                 'color'=>[
  1840.                     'rgb' => '085906'
  1841.                 ]
  1842.             ],
  1843.             'font'=>[
  1844.                 'bold' => true,
  1845.                 'italic' => true,
  1846.                 'name' => 'Times New Roman',
  1847.                 'size' => 12,
  1848.                 'color'=>[
  1849.                     'rgb' => 'FFFFFF'
  1850.                 ]
  1851.             ],
  1852.         ];
  1853. /*********************Получаем категории*******************************************/
  1854.         if (!empty($data)) {
  1855.             $r = $this->get_typ(false, $data);
  1856.         }else $r = $this->get_typ();
  1857.         $is=0;
  1858.         foreach ($r as $res){
  1859.             if ($is!=0){
  1860.                 /*if (!empty($data)){
  1861.                     $q=$this->get_typ_kol($res['id'], $data);
  1862.                         if (count($q)!=0){
  1863.                             $objPHPExcel->createSheet();
  1864.                             $objPHPExcel->setActiveSheetIndex($is);
  1865.                             $active_sheet = $objPHPExcel->getActiveSheet();
  1866.                         }else $is--;*/
  1867.                 #}else{
  1868.                    $objPHPExcel->createSheet();
  1869.                     $objPHPExcel->setActiveSheetIndex($is);
  1870.                     $active_sheet = $objPHPExcel->getActiveSheet();
  1871.                 #}
  1872.            }
  1873.             /*if (!empty($data)){
  1874.                 $q=$this->get_typ_kol($res['id'], $data);
  1875.                 if (count($q)!=0){
  1876.                     $objPHPExcel->removeSheetByIndex($is);
  1877.                 }
  1878.             }*/
  1879.             $active_sheet->getPageSetup()->setOrientation(\PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
  1880.             $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToPage(true);
  1881.             $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToWidth(1);
  1882.             $objPHPExcel->getActiveSheet()->getPageSetup()->setFitToHeight(0);
  1883.             $active_sheet->getPageSetup()->SetPaperSize(\PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
  1884.  
  1885.  
  1886.             /***********************Поля документа*********************************************/
  1887.             $active_sheet->getPageMargins()->setTop(1);
  1888.             $active_sheet->getPageMargins()->setRight(0.75);
  1889.             $active_sheet->getPageMargins()->setLeft(0.75);
  1890.             $active_sheet->getPageMargins()->setBottom(1);
  1891.             $is++;
  1892.             $str=mb_substr(trim($res['nazv']), 0, 31);
  1893.             $active_sheet->setTitle($str);
  1894.             $active_sheet->getHeaderFooter()->setOddHeader("&C".AG_NAME.": прайс лист");
  1895.             $active_sheet->getHeaderFooter()->setOddFooter('&L&B'.$active_sheet->getTitle().'&RСтраница &P из &N');
  1896.             $objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
  1897.             $objPHPExcel->getDefaultStyle()->getFont()->setSize(8);
  1898.  
  1899.             $active_sheet->getColumnDimension('A')->setWidth(35);
  1900.             $active_sheet->getColumnDimension('B')->setWidth(25);
  1901.             $active_sheet->getColumnDimension('C')->setWidth(40);
  1902.             $active_sheet->getColumnDimension('D')->setWidth(35);
  1903.             $active_sheet->getColumnDimension('E')->setWidth(35);
  1904.  
  1905.             if (!empty($data)){
  1906.                 $active_sheet->getColumnDimension('F')->setWidth(20);
  1907.                 $active_sheet->getColumnDimension('G')->setWidth(18);
  1908.                 $active_sheet->getColumnDimension('H')->setWidth(18);
  1909.             }
  1910.  
  1911.             $active_sheet->setCellValue('E1','"'.AG_NAME.'"');
  1912.             $active_sheet->setCellValue('E2','Т. '.AG_PHONE1.', '.AG_PHONE2);
  1913.             $active_sheet->setCellValue('E3',AG_MAIL_SERVER);
  1914.             $objPHPExcel->getActiveSheet()->getCell('E3')->getHyperlink()->setUrl('mailto:'.AG_MAIL_SERVER);
  1915.             $active_sheet->setCellValue('E4',AG_MAIL_ADMIN);
  1916.             $objPHPExcel->getActiveSheet()->getCell('E4')->getHyperlink()->setUrl('mailto:'.AG_MAIL_ADMIN);
  1917.             $active_sheet->setCellValue('E5',AG_SERVER);
  1918.             $objPHPExcel->getActiveSheet()->getCell('E5')->getHyperlink()->setUrl('http://'.AG_SERVER);
  1919.  
  1920.             $active_sheet->getRowDimension('1')->setRowHeight(20);
  1921.             $active_sheet->getRowDimension('2')->setRowHeight(20);
  1922.             $active_sheet->getRowDimension('3')->setRowHeight(20);
  1923.             $active_sheet->getRowDimension('4')->setRowHeight(20);
  1924.             $active_sheet->getRowDimension('5')->setRowHeight(20);
  1925.  
  1926.             $active_sheet->mergeCells('A1:B5');
  1927.             $imagePath =  $_SERVER["DOCUMENT_ROOT"]."/img/img_xls.png";
  1928.             if (file_exists($imagePath)) {
  1929.                 $logo = new \PHPExcel_Worksheet_Drawing();
  1930.                 $logo->setPath($imagePath);
  1931.                 $logo->setCoordinates("A1");
  1932.                 $logo->setOffsetX(15);
  1933.                 $logo->setOffsetY(15);
  1934.                 $logo->setWorksheet($active_sheet);
  1935.             }
  1936.  
  1937.             $active_sheet->mergeCells('C1:C5');
  1938.             $active_sheet->setCellValue('C1','Прайс-лист');
  1939.  
  1940.             $active_sheet->mergeCells('D1:D5');
  1941.  
  1942.             $imagePath =  $_SERVER["DOCUMENT_ROOT"]."/img/gerb.png";
  1943.             if (file_exists($imagePath)) {
  1944.                 $logo = new \PHPExcel_Worksheet_Drawing();
  1945.                 $logo->setPath($imagePath);
  1946.                 $logo->setWidthAndHeight(230,230);
  1947.                 $logo->setResizeProportional(true);
  1948.                 $logo->setCoordinates("D1");
  1949.                 $logo->setOffsetX(-25);
  1950.                 $logo->setOffsetY(0);
  1951.                 $logo->setWorksheet($active_sheet);
  1952.             }
  1953.             if (!empty($data)){
  1954.                 $active_sheet->mergeCells('A6:H6');
  1955.             }else
  1956.             $active_sheet->mergeCells('A6:E6');
  1957.             $active_sheet->setCellValue('A6','Португальский производитель сантехники');
  1958.  
  1959.             $active_sheet->mergeCells('A7:D7');
  1960.             $active_sheet->setCellValue('A7','Дата создания прайслиста');
  1961.  
  1962.             $date = date('d-m-Y');
  1963.             $active_sheet->setCellValue('E7',$date);
  1964.             $active_sheet->getStyle('E7')
  1965.                 ->getNumberFormat()->
  1966.                 setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14);
  1967.  
  1968.             $active_sheet->setCellValue('A9','Изображение');
  1969.             $active_sheet->setCellValue('B9','Артикул');
  1970.             $active_sheet->setCellValue('C9','Описание');
  1971.             $active_sheet->setCellValue('D9','Схема');
  1972.             $active_sheet->setCellValue('E9','Цена, EUR('.$params.')');
  1973.             if (!empty($data)) {
  1974.                 $active_sheet->setCellValue('F9', 'Цена Китая');
  1975.                 $active_sheet->setCellValue('G9', 'Количество');
  1976.                 $active_sheet->setCellValue('H9', 'Дата');
  1977.             }
  1978.         /*************************Применяем стили**************************/
  1979.             if (!empty($data)){
  1980.                 $active_sheet->getStyle('A6:H6')->applyFromArray($style_slogan);
  1981.             }else
  1982.             $active_sheet->getStyle('A6:E6')->applyFromArray($style_slogan);
  1983.             $active_sheet->getStyle('A7:D7')->applyFromArray($style_tdate);
  1984.             $active_sheet->getStyle('E7')->applyFromArray($style_date);
  1985.             if (!empty($data)){
  1986.                 $active_sheet->getStyle('A9:H9')->applyFromArray($style_hprice);
  1987.             }else
  1988.             $active_sheet->getStyle('A9:E9')->applyFromArray($style_hprice);
  1989.         /******************************************************************/
  1990.             if (!empty($data)){
  1991.                 $active_sheet->mergeCells('A8'.':H8');
  1992.             }else
  1993.             $active_sheet->mergeCells('A8'.':E8');
  1994.             $active_sheet->setCellValue('A8',ucwords($res['nazv']));
  1995.             if (!empty($data)){
  1996.                 $active_sheet->getStyle('A8'.':H8')->applyFromArray($style_typ);
  1997.             }else
  1998.             $active_sheet->getStyle('A8'.':E8')->applyFromArray($style_typ);
  1999.             $objPHPExcel->getActiveSheet()->freezePane('A10');
  2000.         /*****************************Получаем заголовки****************************************/
  2001.             $row_start = 10;
  2002.             $i = 0;
  2003.             $schet=0;
  2004.             if (!empty($data)){
  2005.                 $q=$this->get_typ_kol($res['id'], $data);
  2006.             }else
  2007.         $q=$this->get_typ_kol($res['id']);
  2008.         if (count($q)!=0) {
  2009.             foreach ($q as $qes) {
  2010.                 if ($qes['schet'] != 0) {
  2011.                     $row_next = $row_start + $i;
  2012.                     if (!empty($data)) {
  2013.                         $active_sheet->mergeCells('A' . $row_next . ':H' . $row_next);
  2014.                     } else
  2015.                         $active_sheet->mergeCells('A' . $row_next . ':E' . $row_next);
  2016.                     $active_sheet->getRowDimension($row_next)->setRowHeight(30);
  2017.                     if ($qes['nazv_kol'] == 'Без коллекции')
  2018.                         $active_sheet->setCellValue('A' . $row_next, ucwords($qes['nazv_tov']));
  2019.                     else
  2020.                         $active_sheet->setCellValue('A' . $row_next, ucwords($qes['nazv_kol']) . " " . ucwords($qes['nazv_tov']));
  2021.                     if (!empty($data)) {
  2022.                         $active_sheet->getStyle('A' . $row_next . ':H' . $row_next)->applyFromArray($style_naz);
  2023.                     } else
  2024.                         $active_sheet->getStyle('A' . $row_next . ':E' . $row_next)->applyFromArray($style_naz);
  2025.                     $i++;
  2026.                     /************************Вывод товара**************************************/
  2027.                     if (!empty($data)) {
  2028.                         $d = $this->get_price_tov($qes['id_kol'], $qes['id_typ'], $qes['nazv_tov'], $data);
  2029.                     } else
  2030.                         $d = $this->get_price_tov($qes['id_kol'], $qes['id_typ'], $qes['nazv_tov']);
  2031.                     foreach ($d as $des) {
  2032.                         $opisanie = '';
  2033.                         $row_next = $row_start + $i;
  2034.                         $active_sheet->getRowDimension($row_next)->setRowHeight(150);
  2035.                         if ($type == 0) {
  2036.                             if ($des['foto'] != 'images/no-image.png') {
  2037.                                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $des['foto'];
  2038.                                 if (file_exists($imagePath)) {
  2039.                                     $logo = new \PHPExcel_Worksheet_Drawing();
  2040.                                     $logo->setPath($imagePath);
  2041.                                     $logo->setWidthAndHeight(190, 190);
  2042.                                     $logo->setResizeProportional(true);
  2043.                                     $logo->setCoordinates("A" . $row_next);
  2044.                                     $logo->setOffsetX(3);
  2045.                                     $logo->setOffsetY(3);
  2046.                                     $logo->setWorksheet($active_sheet);
  2047.                                 }
  2048.                             }
  2049.                         }
  2050.                         /*******************************Описание************************************/
  2051.                         foreach ($des as $key => $value) {
  2052.                             if ($key != 'art' && $key != 'foto' && $key != 'foto1' && $key != 'cena') {
  2053.                                 $opisanie .= ucwords($key) . ucwords($value) . "\n";
  2054.                             }
  2055.                         }
  2056.                         /*******************************Описание, артикул и цена************************************/
  2057.                         $active_sheet->setCellValue('C' . $row_next, $opisanie);
  2058.                         $active_sheet->setCellValue('B' . $row_next, strtoupper($des['art']));
  2059.                         $active_sheet->setCellValue('E' . $row_next, $des['cena']);
  2060.                         if (!empty($data)) {
  2061.                             $active_sheet->setCellValue('F' . $row_next, $des['cena_china']);
  2062.                             $active_sheet->setCellValue('G' . $row_next, $des['kolvo']);
  2063.                             $active_sheet->setCellValue('H' . $row_next, $des['data']);
  2064.                         }
  2065.                         /***************************************************************************/
  2066.                         if ($type == 0) {
  2067.                             if ($des['foto1'] != 'images/no-image.png') {
  2068.                                 $imagePath = $_SERVER["DOCUMENT_ROOT"] . "/" . $des['foto1'];
  2069.                                 if (file_exists($imagePath)) {
  2070.                                     $logo = new \PHPExcel_Worksheet_Drawing();
  2071.                                     $logo->setPath($imagePath);
  2072.                                     $logo->setWidthAndHeight(190, 190);
  2073.                                     $logo->setResizeProportional(true);
  2074.                                     $logo->setCoordinates("D" . $row_next);
  2075.                                     $logo->setOffsetX(3);
  2076.                                     $logo->setOffsetY(3);
  2077.                                     $logo->setWorksheet($active_sheet);
  2078.                                 }
  2079.                             }
  2080.                         }
  2081.                         $i++;
  2082.                     }
  2083.                     # Не забыть сделать $i++;
  2084.                    /**************************************************************************/
  2085.                 }
  2086.                 $schet += $qes['schet'];
  2087.             }
  2088.             if (!empty($data)) {
  2089.                 $active_sheet->getStyle('A1:H' . ($i + 10))->applyFromArray($style_wrap);
  2090.                 $active_sheet->getStyle('A1:H' . ($i + 10))->getAlignment()->setWrapText(true);
  2091.                 $active_sheet->getStyle('A1:H' . ($i + 10))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  2092.                 $active_sheet->getStyle('E'.($row_start+1).':F'.($i+9))->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
  2093.                 $active_sheet->getStyle('E'.($row_start+1).':H'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  2094.                 $active_sheet->getStyle('E'.($row_start+1).':H'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2095.  
  2096.             } else{
  2097.                 $active_sheet->getStyle('A1:E' . ($i + 10))->applyFromArray($style_wrap);
  2098.                 $active_sheet->getStyle('A1:E' . ($i + 10))->getAlignment()->setWrapText(true);
  2099.                 $active_sheet->getStyle('A1:E' . ($i + 10))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  2100.                 $active_sheet->getStyle('E'.($row_start+1).':E'.($i+9))->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
  2101.                 $active_sheet->getStyle('E'.($row_start+1).':E'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  2102.                 $active_sheet->getStyle('E'.($row_start+1).':E'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2103.             }
  2104.  
  2105.  
  2106.  
  2107.             $active_sheet->getStyle('B'.($row_start+1).':B'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  2108.             $active_sheet->getStyle('B'.($row_start+1).':B'.($i+9))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2109.             if (!empty($data)){
  2110.                 $active_sheet->getStyle('A1:H5')->applyFromArray($style_header);
  2111.             }else
  2112.                 $active_sheet->getStyle('A1:E5')->applyFromArray($style_header);
  2113.  
  2114.  
  2115.             $active_sheet->getStyle('E1:E5')->applyFromArray($style_right);
  2116.             $string="Итого: ".$this->num_decline(($schet), "товар, товара, товаров");
  2117.             $active_sheet->setCellValue('A'.($i+10),$string);
  2118.             if (!empty($data)){
  2119.                 $active_sheet->mergeCells('A'.($i+10).':H'.($i+10));
  2120.                 $active_sheet->getStyle('A'.($i+10).':H'.($i+10))->applyFromArray($style_hprice);
  2121.             }else {
  2122.                 $active_sheet->mergeCells('A' . ($i + 10) . ':E' . ($i + 10));
  2123.                 $active_sheet->getStyle('A' . ($i + 10) . ':E' . ($i + 10))->applyFromArray($style_hprice);
  2124.             }
  2125.         }
  2126.         /***************************************************************************************/
  2127.         /*if ($is==1) {
  2128.             if (!empty($data)) {
  2129.                 $q = $this->get_typ_kol($res['id'], $data);
  2130.                 if (count($q) != 0) {
  2131.                     $objPHPExcel->removeSheetByIndex($is-1);
  2132.                     $is=0;
  2133.                 }
  2134.             }
  2135.         }*/
  2136.         }
  2137.  
  2138.  
  2139.  
  2140.  
  2141.         $objPHPExcel->setActiveSheetIndex(0);
  2142.  
  2143.         if ($type==0) {
  2144.             header("Content-Type:application/vnd.ms-excel");
  2145.             header("Content-Disposition:attachment;filename='" . AG_NAME . "-" . date('d-m-Y') . ".xls'");
  2146.             $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  2147.             $objWriter->save('php://output');
  2148.         }else {
  2149.             $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  2150.             $objWriter->save(AG_NAME . '-' . date('d-m-Y') . '.xls');
  2151.             $GLOBALS['send_price_name']=AG_NAME . '-' . date('d-m-Y') . '.xls';
  2152.         }
  2153.         #exit();
  2154.    }
  2155.     /*************************************************************************/
  2156. }
  2157. #file_put_contents('filename.json', $str."\r\n", FILE_APPEND);
  2158. //file_put_contents('filename.json', json_encode($p), JSON_UNESCAPED_UNICODE);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement