Пример #1
0
 /**
  * setTag
  * 设置标签
  *
  * @access public
  * @return void
  */
 function setTag()
 {
     $tag = space_split(stripslashes($_POST['_SET_TAGS_']));
     unset($_POST['_SET_TAGS_']);
     if ($this->model->setTag($_POST, $tag)) {
         echo '标签已设置';
     }
 }
Пример #2
0
 function uploader()
 {
     $storager =& $this->system->loadModel('system/storager');
     set_error_handler(array(&$this, '_eH'));
     //如果上传图片时遇到trigger_error或者意外错误,执行_eH
     header('Content-Type: text/html; charset=utf-8');
     if ($s = $storager->save_upload($_FILES['file'], '', '', $msg)) {
         restore_error_handler();
         $pubFile =& $this->system->loadModel('system/pubfile');
         $pubFile->insert(array('file_name' => $_FILES['file']['name'], 'file_ident' => $s, 'cdate' => time(), 'memo' => $_POST['memo'], 'tags' => space_split(stripslashes($_POST['tags'])), 'file_type' => $_POST['file_type']));
         $info = array('url' => $storager->getUrl($s), 'ident' => $s);
         echo '<script>window.top.uploadCallback(' . json_encode($info) . ')</script>';
     } else {
         restore_error_handler();
         echo '<script>window.top.uploadCallback("' . ($msg ? $msg : '上传失败') . '")</script>';
     }
 }
Пример #3
0
 function toAdd()
 {
     $data = $_POST['goods'];
     $data['spec_desc'] = urldecode($data['spec_desc']);
     switch ($_GET['but']) {
         case 3:
             if ($data['goods_id']) {
                 $but_type = 'edit';
                 $url_href = 'index.php?ctl=goods/product&act=edit&p[0]=' . $data['goods_id'];
             } else {
                 $but_type = 'new';
                 $url_href = 'index.php?ctl=goods/product&act=index';
             }
             break;
         case 1:
             //$url_href = 'index.php?ctl=goods/product&act=addNew&p[0]='.$data['cat_id'].'&p[1]='.$data['type_id'].'&p[2]='.$data['brand_id'];
             $url_href = 'index.php?ctl=goods/product&act=addNew&p[0]=&p[1]=';
             break;
         default:
             $url_href = 'index.php?ctl=goods/product&act=index';
             break;
     }
     $this->begin($url_href);
     $image_file = $data['image_file'];
     unset($data['image_file']);
     $udfimg = $data['udfimg'];
     unset($data['udfimg']);
     $data['adjunct'] = $_POST['adjunct'];
     if (count($_POST['price']) > 0) {
         //开启规格 多货品
         foreach ($_POST['vars'] as $vark => $varv) {
             $data['spec'][$vark] = $varv;
         }
         $data['spec'] = serialize($data['spec']);
         $sameProFlag = array();
         foreach ($_POST['price'] as $k => $price) {
             //设置销售多货品销售价等价格
             $data['price'] = $data['price'] ? min($price, $data['price']) : $price;
             //取最小商品价格
             $data['cost'] = $data['cost'] ? min($_POST['cost'][$k], $data['cost']) : $_POST['cost'][$k];
             $data['weight'] = $data['weight'] ? min($_POST['weight'][$k], $data['weight']) : $_POST['weight'][$k];
             $products[$k]['price'] = $price;
             $products[$k]['bn'] = $_POST['bn'][$k];
             $products[$k]['store'] = trim($_POST['store'][$k]) === '' ? '' : intval($_POST['store'][$k]);
             $products[$k]['alert'] = $_POST['alert'][$k];
             $products[$k]['cost'] = $_POST['cost'][$k];
             $products[$k]['weight'] = $_POST['weight'][$k];
             $newSpecI = 0;
             $proSpecFlag = '';
             foreach ($_POST['vars'] as $i => $v) {
                 $products[$k]['props']['spec'][$i] = urldecode(trim($_POST['val'][$i][$k]));
                 //array('规格(颜色)序号'=>'规格值(红色)')
                 $products[$k]['props']['spec_private_value_id'][$i] = trim($_POST['pSpecId'][$i][$k]);
                 $products[$k]['props']['spec_value_id'][$i] = trim($_POST['specVId'][$i][$k]);
                 if (trim($products[$k]['props']['spec'][$i]) === '') {
                     trigger_error('请为所有货品定义规格值', E_USER_ERROR);
                     $this->end(false, __('请为所有货品定义规格值'));
                     exit;
                 }
                 $proSpecFlag .= $products[$k]['props']['spec_private_value_id'][$i] . '_';
             }
             if (in_array($proSpecFlag, $sameProFlag)) {
                 trigger_error('不能添加相同规格货品', E_USER_ERROR);
                 $this->end(false, __('不能添加相同规格货品'));
                 exit;
             }
             $sameProFlag[$k] = $proSpecFlag;
             reset($proSpecFlag);
             reset($_POST['vars'], $_POST['pSpecId']);
             $products[$k]['pdt_desc'] = implode('、', $products[$k]['props']['spec']);
             //物品描述
             foreach ($_POST['idata'] as $i => $v) {
                 $products[$k]['props']['idata'][$i] = $v[$k];
             }
             //设置会员价格
             if (is_array($_POST['mprice'])) {
                 foreach ($_POST['mprice'] as $levelid => $rows) {
                     $products[$k]['mprice'][$levelid] = floatval($rows[$k]);
                 }
             }
         }
         unset($sameProFlag);
         $data['products'] =& $products;
     } else {
         $data['props']['idata'] = $_POST['idata'];
     }
     $objGoods = $this->system->loadModel('trading/goods');
     foreach ($products as $k => $p) {
         if (empty($p['bn'])) {
             continue;
         }
         if ($objGoods->checkProductBn($p['bn'], $data['goods_id'])) {
             trigger_error('货号重复,请检查!', E_USER_ERROR);
             $this->end(false, __('货号重复,请检查!'));
             exit;
         }
         $aBn[] = $p['bn'];
     }
     if (!empty($data['product_bn'])) {
         if ($objGoods->checkProductBn($data['product_bn'], $data['goods_id'])) {
             trigger_error('货号重复,请检查!', E_USER_ERROR);
             $this->end(false, __('货号重复,请检查!'));
             exit;
         }
     }
     if (count($aBn) > count(array_unique($aBn))) {
         trigger_error('货号重复,请检查!', E_USER_ERROR);
         $this->end(false, __('货号重复,请检查!'));
         exit;
     }
     if (!$data['type_id']) {
         $objCat = $this->system->loadModel('goods/productCat');
         $aCat = $objCat->getFieldById($data['cat_id'], array('type_id'));
         $data['type_id'] = $aCat['type_id'];
     }
     if (!($gid = $objGoods->save($data))) {
         $this->end(false, __('保存失败,请重试!'));
         exit;
     }
     $keywords = array();
     foreach ($objGoods->getKeywords($gid) as $keywordvalue) {
         $keywords[] = $keywordvalue['keyword'];
     }
     $keyword = implode('|', $keywords);
     if ($keyword != $_POST['keywords']['keyword']) {
         $objGoods->deleteKeywords($gid);
         if ($_POST['keywords']['keyword']) {
             $objGoods->addKeywords($gid, explode('|', $_POST['keywords']['keyword']));
         }
     }
     //处理商品图片
     $gimage =& $this->system->loadModel('goods/gimage');
     $gimage->saveImage($data['goods_id'], $data['db_thumbnail_pic'], $_POST['image_default'], $image_file, $udfimg, $_FILES);
     //相关商品
     foreach ($_POST['linkid'] as $k => $id) {
         $aLink[] = array('goods_1' => $data['goods_id'], 'goods_2' => $id, 'manual' => $_POST['linktype'][$id], 'rate' => 100);
     }
     $objProduct = $this->system->loadModel('goods/products');
     $objProduct->toInsertLink($data['goods_id'], $aLink);
     //处理TAG
     $objTag = $this->system->loadModel('system/tag');
     $objTag->removeObjTag($data['goods_id']);
     foreach (space_split(stripslashes($_POST['tags'])) as $tagName) {
         $tagName = trim($tagName);
         if ($tagName) {
             if (!($tagid = $objTag->getTagByName('goods', $tagName))) {
                 $tagid = $objTag->newTag($tagName, 'goods');
             }
             $objTag->addTag($tagid, $data['goods_id']);
         }
     }
     //###
     if ($but_type == 'new') {
         $this->end(true, __('保存成功<input type=hidden value=' . $gid . '>'), 'index.php?ctl=goods/product&act=edit&p[0]=' . $gid);
     } else {
         if ($_GET['but'] == 1) {
             $this->end(true, __('保存成功<input type=hidden value=' . $gid . '>'), $url_href . $gid);
         } else {
             $this->end(true, __('保存成功<input type=hidden value=' . $gid . '>'));
         }
     }
 }
Пример #4
0
 function update()
 {
     unSafeVar($_POST);
     $goods = $_POST['goods'];
     $goods['name'] = trim($_POST['goods']['name']);
     $goods['image_default'] = $_POST['image_default'];
     $this->goods_id = $goods['goods_id'];
     $gd =& $this->system->loadModel('utility/magickwand');
     if ($gd->magickwand_loaded) {
         $loaded = true;
     } else {
         $gd =& $this->system->loadModel('utility/gdimage');
         $loaded = $gd->gd_loaded;
     }
     $this->pagedata['gd_loaded'] = $loaded;
     $this->pagedata['pic_bar'] = $_POST['pic_bar'];
     /*
     if($_POST['vars']){
         $goods['products'] = array(1);
         $spec['bn'] = $_POST['bn'];
         $spec['price'] = $_POST['price'];
         $spec['store'] = $_POST['store'];
         $spec['mprice'] = $_POST['mprice'];
         $spec['vars'] = $_POST['vars'];
         $spec['val'] = $_POST['val'];
         $spec['idata'] = $_POST['idata'];
         $spec['idataInfo'] = $_POST['idataInfo'];
         $this->pagedata['spec'] = &$spec;    //商品规格
     }
     */
     if ($_POST['bn'] && is_array($_POST['bn'])) {
         foreach ($_POST['bn'] as $gk => $gbn) {
             $goods['products'][$gk] = array('bn' => $gbn, 'cost' => $_POST['cost'][$gk], 'weight' => $_POST['weight'][$gk], 'store' => $_POST['store'][$gk], 'price' => $_POST['price'][$gk]);
             foreach ($_POST['mprice'] as $memlvid => $mprice) {
                 $goods['products'][$gk]['mprice'][$memlvid] = $mprice[$gk];
             }
             $goodsProps = array();
             foreach ($_POST['val'] as $valSpecId => $valSpec) {
                 $goodsProps['spec'][$valSpecId] = urldecode($valSpec[$gk]);
                 $goodsProps['spec_private_value_id'][$valSpecId] = $_POST['pSpecId'][$valSpecId][$gk];
                 $goodsProps['spec_value_id'][$valSpecId] = $_POST['specVId'][$valSpecId][$gk];
             }
             $goods['products'][$gk]['props'] = $goodsProps;
         }
     }
     foreach ($_POST['adjunct']['name'] as $key => $name) {
         $aItem['name'] = $name;
         $aItem['type'] = $_POST['adjunct']['type'][$key];
         $aItem['min_num'] = $_POST['adjunct']['min_num'][$key];
         $aItem['max_num'] = $_POST['adjunct']['max_num'][$key];
         $aItem['set_price'] = $_POST['adjunct']['set_price'][$key];
         $aItem['price'] = $_POST['adjunct']['price'][$key];
         if ($aItem['type'] == 'goods') {
             $aItem['items']['product_id'] = $_POST['adjunct']['items'][$key];
         } else {
             $aItem['items'] = $_POST['adjunct']['items'][$key];
         }
         //.'&dis_goods[]='.$aData['goods_id']
         $goods['adjunct'][] = $aItem;
     }
     if ($goods['spec_desc']) {
         $goods['spec_desc'] = unserialize(urldecode($goods['spec_desc']));
     }
     //做类型转换
     $oGType = $this->system->loadModel('goods/gtype');
     if (!$oGType->typeTransform($_POST['oldTypeId'], $_POST['goods']['type_id'], $goods, $_POST)) {
         echo 'false';
         exit;
     }
     if (!empty($_POST['vars'])) {
         if ($oGType->specTransformState == 'different' || $oGType->specTransformState == 'same') {
             foreach ($_POST['vars'] as $dk => $dv) {
                 $_POST['specname'][$dk]['spec_name'] = $dv;
             }
         } else {
             foreach ($_POST['vars'] as $dk => $dv) {
                 $_POST['specname'][$oGType->specTransformHash[$dk]['spec_id']]['spec_name'] = $dv;
             }
         }
     }
     $this->pagedata['goods'] =& $goods;
     foreach ($_POST['linkid'] as $k => $id) {
         $aLinkType[$id] = array('manual' => $_POST['linktype'][$k]);
     }
     $this->pagedata['goods']['glink']['items'] = $_POST['linkid'];
     $this->pagedata['goods']['glink']['moreinfo'] = $aLinkType;
     $this->pagedata['goods']['keywords'] = $_POST['keywords']['keyword'];
     foreach ($goods as $gk => $gv) {
         if (substr($gk, 0, 2) == 'p_') {
             $this->pagedata['goods'][$gk] = $gv;
         }
     }
     if ($goods['spec_desc']) {
         $objSpec = $this->system->loadModel('goods/specification');
         $specDescKeys = array_keys($goods['spec_desc']);
         if (!empty($specDescKeys) && $specDesckeys[0]) {
             $aSpec = $objSpec->getListByIdArray($specDescKeys);
         }
         $this->pagedata['specname'] = $aSpec;
         $aSpecImg = array();
         $gimage = $this->system->loadModel('goods/gimage');
         foreach ($aSpec as $asv) {
             if ($asv['spec_type'] == 'image') {
                 foreach ($objSpec->getValueList($asv['spec_id']) as $svk => $svv) {
                     $aSpecImg[$svk] = $gimage->getUrl($svv['spec_image']);
                 }
             }
         }
         $this->pagedata['goods']['spec_value_image'] = $aSpecImg;
         $tmpGoods = array();
         $specDefaultPic = $this->system->getConf('spec.default.pic');
         if (is_array($goods['spec_desc'])) {
             foreach ($goods['spec_desc'] as $key => $val) {
                 $tmpRow = $objSpec->getFieldById($key, array('spec_name', 'spec_type', 'spec_show_type'));
                 $tmpGoods['spec_desc'][$key]['name'] = $tmpRow['spec_name'];
                 foreach ($val as $k => $v) {
                     if (empty($val[$k]['spec_image']) || is_null($val[$k]['spec_image'])) {
                         $tValue = $objSpec->getValueById($val[$k]['spec_value_id'], array('spec_image'));
                         $val[$k]['spec_image'] = $tValue['spec_image'];
                     }
                     if (empty($val[$k]['spec_image']) || is_null($val[$k]['spec_image'])) {
                         $val[$k]['spec_image'] = $specDefaultPic;
                     }
                     $goods['spec_desc'][$key][$k]['spec_type'] = $tmpRow['spec_type'];
                     $val[$k]['spec_type'] = $tmpRow['spec_type'];
                     $val[$k]['spec_goods_images'] = $key . "@" . $v['spec_goods_images'] . "|" . $k;
                     $spec_type = $tmpRow['spec_type'];
                 }
                 $tmpGoods['spec_desc'][$key]['value'] = $val;
             }
             $this->pagedata['goods']['specVdesc'] = $tmpGoods['spec_desc'];
         }
     }
     $this->pagedata['specname'] = $_POST['specname'];
     $this->pagedata['goods']['spec_desc_str'] = urlencode(serialize($goods['spec_desc']));
     $this->_editor($_POST['goods']['type_id']);
     $this->pagedata['goods']['taged'] = space_split($_POST['tags']);
     $this->pagedata['goodsbn_display_switch'] = $this->system->getConf('goodsbn.display.switch');
     if ($_POST['supplier_id']) {
         $this->pagedata['command_id'] = $_POST['command_id'];
         $this->pagedata['object_id'] = $_POST['object_id'];
         $this->pagedata['supplier_id'] = $_POST['supplier_id'];
     }
     if ($_POST['commandType']) {
         $this->pagedata['commandtype'] = $_POST['commandType'];
     }
     $this->display('product/detail/page.html');
 }
Пример #5
0
 /**
  * setTag
  * 设置标签
  *
  * @access public
  * @return void
  */
 function setTag()
 {
     $tag = space_split($_POST['_SET_TAGS_']);
     unset($_POST['_SET_TAGS_']);
     if ($this->model->setTag($_POST, $tag)) {
         echo __('标签已设置');
     }
 }