1
Changeset eaa6475 – MultiMag

Changeset eaa6475


Ignore:
Timestamp:
Dec 26, 2012, 1:21:54 AM (10 years ago)
Author:
Blacklight <blacklight@…>
Branches:
master
Children:
238dcb1
Parents:
dce157d
Message:
  • Исправлены недоработки дампа базы
  • Добавлены блоки витрины: популярные товары, распродажа, новинки (не закончен)
  • Исправлена потенциальная уязвимость витрины
  • В популярных товарах на главной теперь не показываются товары из скрытых групп
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • config_site.sample.php

    rdce157d reaa6475  
    3333$CONFIG['site']['vitrina_order']        = 'vc'; // Сортировка по умолчанию для витрины. n - по имени, vc - по коду, c - по цене, s - по наличию
    3434$CONFIG['site']['vitrina_subtype']      = 'site';// Подтип заявок, создаваемых витриной. site по умолчанию.
     35$CONFIG['site']['vitrina_newtime']      = 15;   // Считать новинкой товар, созданный или впервые поступивший на склад не позже X суток назад
    3536$CONFIG['site']['recode_enable']        = false;// Разрешить "красивые" ссылки. Необходим mod_recode.
    3637$CONFIG['site']['dowload_attach_speed'] = 16;   // Скорость скачивания вложений с сайта(кбайт/сек). Для снижения расхода памяти рекомендуются меньшие значения.
  • db_struct.sql

    rdce157d reaa6475  
    18541854  KEY `jid` (`jid`),
    18551855  KEY `agent_id` (`agent_id`)
    1856 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Spisok pol''zovatelei' AUTO_INCREMENT=3 ;
     1856) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='Spisok pol''zovatelei' AUTO_INCREMENT=2 ;
    18571857
    18581858--
     
    18621862INSERT INTO `users` (`id`, `name`, `pass`, `pass_type`, `pass_change`, `pass_expired`, `pass_date_change`, `reg_email`, `reg_email_confirm`, `reg_email_subscribe`, `reg_phone`, `reg_phone_subscribe`, `reg_phone_confirm`, `reg_date`, `disabled`, `disabled_reason`, `bifact_auth`, `real_name`, `real_address`, `jid`, `type`, `agent_id`) VALUES
    18631863(0, 'anonymous', '--not-valid--', '', '', 0, '0000-00-00 00:00:00', '', '', 0, '', 0, '', '0000-00-00 00:00:00', 0, '', 0, '', '', '', '', 1),
    1864 (2, 'root', 'enter_md5_password', '', '', 0, '0000-00-00 00:00:00', '', '', 0, '', 0, '', '0000-00-00 00:00:00', 0, '', 0, '', '', '', '', NULL);
     1864(1, 'root', 'enter_md5_password', '', '', 0, '0000-00-00 00:00:00', '', '', 0, '', 0, '', '0000-00-00 00:00:00', 0, '', 0, '', '', '', '', NULL);
    18651865
    18661866-- --------------------------------------------------------
  • web/index.php

    rdce157d reaa6475  
    193193
    194194        $res=mysql_query("SELECT `doc_base`.`id`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost`, `doc_img`.`id` AS `img_id`, `doc_base`.`likvid`, `doc_img`.`type` AS `img_type`, ( SELECT SUM(`doc_base_cnt`.`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base`.`id`) AS `count`, `class_unit`.`rus_name1` AS `units` FROM `doc_base`
     195        INNER JOIN `doc_group` ON `doc_group`.`id`= `doc_base`.`group` AND `doc_group`.`hidelevel`='0'
    195196        LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
    196197        LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
  • web/vitrina.php

    rdce157d reaa6475  
    6060                return true;
    6161        }
     62        else if($arr[2]=='block')// Заданный блок
     63        {
     64                $this->ViewBlock($block);
     65                return true;
     66        }       
    6267        else if($arr[2]=='ng')  // Наименование группы
    6368        {
     
    7075        return false;
    7176}
    72 /// Исполнение заданной функции
     77
     78///Исполнение заданной функции
    7379function ExecMode($mode)
    7480{
     
    9197        {
    9298                $this->Basket();
     99        }
     100        else if($mode=='block')
     101        {
     102                $this->ViewBlock($_REQUEST['type']);
    93103        }
    94104        else if($mode=='korz_add')
     
    236246        global $tmpl, $CONFIG, $wikiparser;
    237247        settype($group,'int');
     248        settype($page,'int');
    238249        $res=mysql_query("SELECT `name`, `pid`, `desc`, `title_tag`, `meta_keywords`, `meta_description` FROM `doc_group` WHERE `id`='$group' AND `hidelevel`='0'");
    239250        if(mysql_errno())       throw new MysqlException('Не удалось выбрать информацию о группе');
     
    290301        $this->ProductList($group, $page);
    291302}
     303
    292304/// Список товаров в группе
    293305protected function ProductList($group, $page)
     
    359371}
    360372
     373/// Блок товаров, выбранных по признаку, основанному на типе блока
     374protected function ViewBlock($block)
     375{
     376        global $tmpl, $CONFIG;
     377
     378        /// Определение типа блока
     379        if($block=='stock')
     380        {
     381                $sql="SELECT `doc_base`.`id`, `doc_base`.`group`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost_date`, `doc_base`.`cost`,
     382                ( SELECT SUM(`doc_base_cnt`.`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base`.`id`) AS `count`,
     383                `doc_base_dop`.`tranzit`, `doc_base_dop`.`d_int`, `doc_base_dop`.`d_ext`, `doc_base_dop`.`size`, `doc_base_dop`.`mass`, `doc_base`.`proizv`, `doc_img`.`id` AS `img_id`, `doc_img`.`type` AS `img_type`, `class_unit`.`rus_name1` AS `units`, `doc_base`.`vc`
     384                FROM `doc_base`
     385                LEFT JOIN `doc_base_dop` ON `doc_base_dop`.`id`=`doc_base`.`id`
     386                LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
     387                LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
     388                LEFT JOIN `class_unit` ON `doc_base`.`unit`=`class_unit`.`id`
     389                WHERE `doc_base`.`hidden`='0' AND `doc_base`.`stock`!='0'
     390                ORDER BY `doc_base`.`likvid` ASC";
     391                $tmpl->AddText("<h1>Распродажа</h1>");
     392        }
     393        else if($block=='popular')
     394        {
     395                $sql="SELECT `doc_base`.`id`, `doc_base`.`group`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost_date`, `doc_base`.`cost`,
     396                ( SELECT SUM(`doc_base_cnt`.`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base`.`id`) AS `count`,
     397                `doc_base_dop`.`tranzit`, `doc_base_dop`.`d_int`, `doc_base_dop`.`d_ext`, `doc_base_dop`.`size`, `doc_base_dop`.`mass`, `doc_base`.`proizv`, `doc_img`.`id` AS `img_id`, `doc_img`.`type` AS `img_type`, `class_unit`.`rus_name1` AS `units`, `doc_base`.`vc`
     398                FROM `doc_base`
     399                INNER JOIN `doc_group` ON `doc_group`.`id`= `doc_base`.`group` AND `doc_group`.`hidelevel`='0'
     400                LEFT JOIN `doc_base_dop` ON `doc_base_dop`.`id`=`doc_base`.`id`
     401                LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
     402                LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
     403                LEFT JOIN `class_unit` ON `doc_base`.`unit`=`class_unit`.`id`
     404                WHERE `doc_base`.`hidden`='0'
     405                ORDER BY `doc_base`.`likvid` DESC
     406                LIMIT 48";
     407                $tmpl->AddText("<h1>Популярные товары</h1>");
     408        }
     409        else if($block=='new')
     410        {
     411                if($CONFIG['site']['vitrina_newtime'])  $new_time=date("Y-m-d H:i:s",time()-60*60*24*$CONFIG['site']['vitrina_newtime']);
     412                else                                    $new_time=date("Y-m-d H:i:s",time()-60*60*24*15);
     413                $sql="SELECT `doc_base`.`id`, `doc_base`.`group`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`cost_date`, `doc_base`.`cost`,
     414                ( SELECT SUM(`doc_base_cnt`.`cnt`) FROM `doc_base_cnt` WHERE `doc_base_cnt`.`id`=`doc_base`.`id` GROUP BY `doc_base`.`id`) AS `count`,
     415                `doc_base_dop`.`tranzit`, `doc_base_dop`.`d_int`, `doc_base_dop`.`d_ext`, `doc_base_dop`.`size`, `doc_base_dop`.`mass`, `doc_base`.`proizv`, `doc_img`.`id` AS `img_id`, `doc_img`.`type` AS `img_type`, `class_unit`.`rus_name1` AS `units`, `doc_base`.`vc`
     416                FROM `doc_base`
     417                INNER JOIN `doc_group` ON `doc_group`.`id`= `doc_base`.`group` AND `doc_group`.`hidelevel`='0'
     418                LEFT JOIN `doc_base_dop` ON `doc_base_dop`.`id`=`doc_base`.`id`
     419                LEFT JOIN `doc_base_img` ON `doc_base_img`.`pos_id`=`doc_base`.`id` AND `doc_base_img`.`default`='1'
     420                LEFT JOIN `doc_img` ON `doc_img`.`id`=`doc_base_img`.`img_id`
     421                LEFT JOIN `class_unit` ON `doc_base`.`unit`=`class_unit`.`id`
     422                WHERE `doc_base`.`hidden`='0' AND (`doc_base`.`create_time`>='$new_time' OR `doc_base`.`buy_time`>='$new_time')
     423                ORDER BY `doc_base`.`likvid` DESC
     424                LIMIT 12";
     425                $tmpl->AddText("<h1>Новинки</h1>");
     426        }
     427        else
     428        {
     429                header('HTTP/1.0 404 Not Found');
     430                header('Status: 404 Not Found');
     431                throw new Exception('Блок не найден!');
     432        }
     433
     434        $res=mysql_query($sql);
     435        if(mysql_errno())       throw new MysqlException("Не удалось получить список товаров!");
     436        $lim=1000;
     437        $rows=mysql_num_rows($res);
     438        if($rows)
     439        {
     440                if($CONFIG['site']['vitrina_plstyle']=='imagelist')             $view='i';
     441                else if($CONFIG['site']['vitrina_plstyle']=='extable')          $view='t';
     442                else                                                            $view='l';
     443
     444                if($view=='i')                  $this->TovList_ImageList($res, $lim);
     445                else if($view=='t')             $this->TovList_ExTable($res, $lim);
     446                else                            $this->TovList_SimpleTable($res, $lim);
     447
     448                $tmpl->AddText("<span style='color:#888'>Серая цена</span> требует уточнения<br>");
     449        }
     450        else $tmpl->msg("Товары в данной категории отсутствуют");
     451}
     452
     453/// Блок ссылок смены вида отображения и сортировки
    361454protected function OrderAndViewBar($group,$page,$order,$view)
    362455{
     
    392485        $tmpl->AddText("</div>");
    393486}
     487
    394488/// Карточка товара
    395489protected function ProductCard($product)
    396490{
    397491        global $tmpl, $CONFIG, $wikiparser;
     492        settype($product,'int');
    398493        $res=mysql_query("SELECT `doc_base`.`id`, `doc_base`.`name`, `doc_base`.`desc`, `doc_base`.`group`, `doc_base`.`cost`,
    399494        `doc_base`.`proizv`, `doc_base_dop`.`d_int`, `doc_base_dop`.`d_ext`, `doc_base_dop`.`size`,
Note: See TracChangeset for help on using the changeset viewer.