/b2b/core/admin/controller/goods/ctl.spec.php
PHP | 432 lines | 373 code | 43 blank | 16 comment | 31 complexity | 110efa15bacd80d871a21fd7f36b9172 MD5 | raw file
- <?php
- class ctl_spec extends adminPage{
-
- var $workground = 'goods';
-
- function enable(){
- $spec = array(
- 'product_id'=>array(''),
- 'store'=>array($_POST['store']),
- 'price'=>array($_POST['price']),
- // 'vars'=>array('??','??'),
- // 'val'=>array(
- // array('?','?'),
- // )
- );
-
- $this->pagedata['spec'] = $spec;
- $this->_output();
- }
-
- function addCol(){
-
- $specDesc = unserialize(stripslashes(urldecode($_POST['goods_spec_desc'])));
-
- $objSpec = $this->system->loadModel('goods/specification');
- $aSpec = array();
- if(empty( $specDesc )){
- $aSpec = $objSpec->getListByTypeId($_GET['type_id']);
- }
- else{
- $aSpec = $objSpec->getListByIdArray( array_keys($specDesc) );
- foreach( $aSpec as $key => $rows ){
- $aSpec[$key]['sel_options'] = $specDesc[$rows['spec_id']];
- }
- }
- foreach($aSpec as $key => $rows){
- $aVal = $objSpec->getValueList($rows['spec_id']);
- foreach($aVal as $k=>$v){
- $aVal[$k]['spec_value'] = htmlspecialchars($v['spec_value'],ENT_QUOTES);
- }
- $aSpec[$key]['options'] = $aVal ;
- $aSpec[$key]['spec_name'] = htmlspecialchars($rows['spec_name'],ENT_QUOTES);
- }
- if( $_POST['goods'] ){
- $this->pagedata['goods_args'] = json_encode( array('goods_args'=>$_POST['goods']));
- }
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->pagedata['specs'] = $aSpec;
- $this->pagedata['ctlType'] = $_POST['ctlType'];
- $this->setView('product/spec_addcol.html');
- $this->output();
- }
-
- function specValue($specId){
- $objSpec = $this->system->loadModel('goods/specification');
- $aSpec = $objSpec->getFieldById($specId, array('*'));
- $aVal = $objSpec->getValueList($specId);
- $aSpec['options'] = $aVal ;
-
- $this->pagedata['sItem'] = $aSpec;
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->setView('product/spec_value.html');
- $this->output();
- }
-
- function doCreatePro( $pro, $spec , $goods_args ){
- if( empty( $spec ) ){
- $res = array();
- foreach( $pro as $pk => $pv ){
- $res[$pk]['sel_spec'] = $pv;
- foreach( $goods_args as $argsk => $argsv )
- $res[$pk][$argsk] = $argsv;
- }
- return $res;
- }
-
- $firestSpec = array_shift( $spec );
-
- $rs = array();
- foreach( $firestSpec as $sitem ){
- foreach( $pro as $pitem ){
- $apitem = $pitem ;
- array_push( $apitem , $sitem );
- $rs[] = $apitem;
- }
- if( empty($pro) )
- $rs[] = array( $sitem );
- }
- return $this->doCreatePro( $rs, $spec , $goods_args );
- }
-
- function selAlbumsImg(){
- $this->pagedata['selImgs'] = explode(',',$_POST['selImgs']);
- $this->pagedata['img'] = $_POST['img'];
- $this->setView('product/spec_selalbumsimg.html');
- $this->output();
- }
-
- function doAddCol(){
- $pro_str = $this->system->loadModel('goods/products');
- $_POST = stripslashes_array($_POST);
- $memberLevel = $this->system->loadModel('member/level');
- $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
- $this->pagedata['spec']['vars'] = $_POST['spec_vars'];
- $this->pagedata['goods']['spec_value_image'] = $_POST['spec_value_image'];
- $this->pagedata['goods']['spec_desc'] = $_POST['goods']['spec_desc'];
- $spec_vars = array();
- foreach( $_POST['spec_vars'] as $k =>$v )
- $spec_vars[$k]['spec_name'] = $v;
- $this->pagedata['specname'] = $spec_vars;
- $this->pagedata['goods']['spec_desc_str'] = urlencode(serialize($_POST['goods']['spec_desc']));
- if( $_POST['goods_args'] ){
- $this->pagedata['goods_args'] = json_encode( array( 'goods_args'=>$_POST['goods_args'] ) );
- }
- $this->pagedata['needUpValue'] = json_encode($_POST['needUpValue']);
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
- $this->_output();
- }
-
- function doSetCol(){
- $pro_str = $this->system->loadModel('goods/products');
- if (!$this->op->is_super){ //?????????????.
- $edit_info = $pro_str->edit_product_info($this->op->opid);
- if ($edit_info['g_p_info'] || $edit_info['g_p_addNew']){
- $this->pagedata['g_p_info'] = 1;
- }
- if ($edit_info['g_p_repertory'] || $edit_info['g_p_addNew']){
- $this->pagedata['g_p_repertory'] = 1;
- }
- if ($edit_info['g_p_price'] || $edit_info['g_p_addNew']){
- $this->pagedata['g_p_price'] = 1;
- }
- $this->pagedata['g_p_addNew'] = $edit_info['g_p_addNew'];
- }else{
- $this->pagedata['g_p_info'] = 1;
- $this->pagedata['g_p_repertory'] = 1;
- $this->pagedata['g_p_price'] = 1;
- $this->pagedata['g_p_addNew'] = 1;
- }
- $_POST = stripslashes_array($_POST);
- $memberLevel = $this->system->loadModel('member/level');
- $this->pagedata['spec']['vars'] = $_POST['spec_vars'];
- $this->pagedata['goods']['spec_value_image'] = $_POST['spec_value_image'];
- $this->pagedata['goods']['spec_desc'] = $_POST['goods']['spec_desc'];
- $spec_vars = array();
- foreach( $_POST['spec_vars'] as $k =>$v )
- $spec_vars[$k]['spec_name'] = $v;
- $this->pagedata['specname'] = $spec_vars;
- $this->pagedata['goods']['spec_desc_str'] = urlencode(serialize($_POST['goods']['spec_desc']));
- if( $_POST['goods_args'] ){
- $this->pagedata['goods_args'] = json_encode( array( 'goods_args'=>$_POST['goods_args'] ) );
- }
- if( $_GET['create'] == 'true' ){
- $pro = array();
- $spec = array();
-
- $i = 1;
- foreach( $_POST['goods']['spec_desc'] as $sid => $sitem ){
- $j = 1;
- foreach( $sitem as $psid => $psitem ){
- $spec[$i][$j] = array(
- 'spec_id'=>$sid,
- 'p_spec_value_id'=>$psid,
- 'spec_value'=>$psitem['spec_value'],
- 'spec_type'=>$psitem['spec_type'],
- 'spec_value_id'=>$psitem['spec_value_id'],
- 'spec_image'=>$psitem['spec_image'],
- 'spec_goods_images'=>$psitem['spec_goods_images']
- );
- $j++;
- }
- $i++;
- }
- $pro = $this->doCreatePro( $pro, $spec , $_POST['goods_args'] );
- $this->pagedata['goods']['products'] = $pro;
- $this->pagedata['fromType'] = 'create';
- }
- $this->pagedata['needUpValue'] = json_encode($_POST['needUpValue']);
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
- $this->pagedata['mlevels'] = $memberLevel->getList('member_lv_id,dis_count');
- $this->setView('product/spec_list.html');
- $this->output();
- }
-
- function addSpecTab(){
- $objSpec = $this->system->loadModel('goods/specification');
- $spec = $objSpec->getFieldById($_POST['spec_id'], array('*'));
- $spec['spec_name'] = htmlspecialchars($spec['spec_name'],ENT_QUOTES);
- $specValue = $objSpec->getValueList($_POST['spec_id']);
- foreach($specValue as $k=>$v){
- $specValue[$k]['spec_value'] = htmlspecialchars($v['spec_value'],ENT_QUOTES);
- }
- $this->pagedata['spec'] = $spec;
- $this->pagedata['specValue'] = $specValue;
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->setView('product/spec_addspectab.html');
- $this->output();
- }
-
- function addSpecValue(){
- $_POST = stripslashes_array($_POST);
- foreach( $_POST['spec'] as $k => $v ){
- if($k == 'specValue'){
- $v = htmlspecialchars($v,ENT_QUOTES);
- }
- $this->pagedata[$k] = $v;
- }
- $this->pagedata['pSpecId'] = time().$_POST['sIteration'];
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->setView('product/spec_addspecvalue.html');
- $this->output();
- }
-
- function addRow(){
- /*
- foreach($_POST['vars'] as $d=>$vs){
- $vars[] = array('id'=>$d,'name'=>$vs,'vars'=>json_encode(array_unique($_POST['val'][$d])));
- }
- */
- if( $_POST['bn'] ){
- // ???????? ????+1 ???xxx-1 ???????xxx-2 2010-01-25 wubin
- if(!empty($_POST['bn'][0])) {
- $_POST['bn'][0]=substr($_POST['bn'][0],0,-1).(substr($_POST['bn'][0],-1)+1);
- }
- //error_log(print_r($_POST['store'],true),3,"d:/2.txt");
- $_POST['goods_args'] = array(
- 'price' => $_POST['price'][0],
- 'cost' => $_POST['cost'][0],
- 'product_bn' => stripslashes($_POST['bn'][0]),
- 'weight' => $_POST['weight'][0],
- 'store' => $_POST['store'][0]
- );
- foreach( $_POST['mprice'] as $mpk => $mpv ){
- $_POST['goods_args']['mprice'][$mpk] = $mpv[0];
- }
- }
-
- $spec_desc = unserialize(stripslashes( $_POST['spec_desc'] ));
- $memberLevel = $this->system->loadModel('member/level');
- $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
- $this->pagedata['goods']['spec_desc'] = $spec_desc;
- $this->pagedata['goods_args'] = $_POST['goods_args'];
- $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
- $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
- $this->setView('product/spec_row.html');
- $this->output();
- }
-
- function delCol($varid){
- $spec = $_POST;
- $ns=array();
- foreach($_POST['product_id'] as $key=>$product_id){
- $n = '';
- foreach($_POST['val'] as $d=>$vs){
- if($d!=$varid){
- $n.=$vs[$key];
- }
- }
- if(isset($ns[$n])){
- $spec['price'][$ns[$n]]+=$spec['price'][$key];
- unset($spec['product_id'][$key]);
- }else{
- $ns[$n] = $key;
- }
- }
- unset($spec['vars'][$varid]);
- $this->pagedata['spec'] = $spec;
- $this->_output();
- }
-
- // function selectSpec($specid){
- // $objSpec = $this->system->loadModel('goods/specification');
- // $aSpecValue = $objSpec->getValueList($specid);
- // echo json_encode($aSpecValue);
- // }
-
- function doAddRow(){
- $spec = $_POST;
- $spec['product_id'][] = '';
-
- foreach($_POST['val'] as $d=>$vs){
- $spec['val'][$d][] = $_POST['_r_var'][$d];
- }
-
- $spec['price'][] = array();
- $this->pagedata['spec'] = $spec;
- $memberLevel = $this->system->loadModel('member/level');
- $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
- $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
- $this->_output();
- }
-
- function getSpecArray($i,$array,$result,&$aRet) {
- if (count($result) == count($array)){
- $aRet[] = $result;
- return ;
- }
-
- foreach ($array[$i] as $j => $v){
- array_push($result,$v);
- $this->getSpecArray($i+1, $array, $result, $aRet);
- array_pop($result);
- }
- }
-
- function selectSpec(){
- $objSpec = $this->system->loadModel('goods/specification');
- $aSpec = $objSpec->getArrayById();
- echo '???<select name="new_spec_id" onchange="selectSpec(this)">';
- echo '<option value="">- ??? -</option>';
- foreach($aSpec as $k => $v){
- echo '<option value="'.$k.'">'.$v.'</option>';
- }
- echo '</select>';
- }
-
-
- function selectVal($specid, $valid){
- $objSpec = $this->system->loadModel('goods/specification');
- $aValue = $objSpec->getValueList($specid);
- echo '<select name="value_id[]" onchange="selectValue(this,'.$specid.')">';
- echo '<option value="">- ??? -</option>';
- foreach($aValue as $v){
- echo '<option value="'.$v['spec_value_id'].'"'.($v['spec_value_id']==$valid ? ' selected' : '').'>'.$v['spec_value'].'</option>';
- }
- echo '</select>';
- }
-
- function removeSpec($id){
- $objSpec = $this->system->loadModel('goods/specification');
- $objSpec->toRemove($id);
-
- $aSpec = $objSpec->getList(0, 1000);
- foreach($aSpec['spec'] as $key => $rows){
- $aVal = $objSpec->getValueList($rows['spec_id']);
- $opt = array();
- foreach($aVal as $vals){
- $opt[] = $vals['spec_value'];
- }
- $aSpec['spec'][$key]['options'] = implode(',', $opt);
- }
-
- $this->pagedata['specs'] = $aSpec['spec'];
- $this->setView('product/spec_select.html');
- $this->output();
- }
-
- function addSpec($typeId = 0) {
- $objSpec = $this->system->loadModel('goods/specification');
- $aSpec = array();
- if($typeId)
- $aSpec = $objSpec->getListByTypeId($typeId);
- else
- $aSpec = $objSpec->getListByIdArray();
- $this->pagedata['specs'] = $aSpec;
- $this->setView('product/spec_select.html');
- $this->output();
- }
-
- function saveSpec($id){
- $objSpec = $this->system->loadModel('goods/specification');
- $objSpec->toRemove($id);
-
- $aSpec = $objSpec->getList(0, 1000);
- foreach($aSpec['spec'] as $key => $rows){
- $aVal = $objSpec->getValueList($rows['spec_id']);
- $opt = array();
- foreach($aVal as $vals){
- $opt[] = $vals['spec_value'];
- }
- $aSpec['spec'][$key]['options'] = implode(',', $opt);
- }
-
- $this->pagedata['specs'] = $aSpec['spec'];
- $this->setView('product/spec_select.html');
- $this->output();
- }
-
- function removeValue($specid, $val){
- $objSpec = $this->system->loadModel('goods/specification');
- $objSpec->toRemoveValue($val, $specid);
-
- $aSpec = $objSpec->getList(0, 1000);
- foreach($aSpec['spec'] as $key => $rows){
- $aVal = $objSpec->getValueList($rows['spec_id']);
- $opt = array();
- foreach($aVal as $vals){
- $opt[] = $vals['spec_value'];
- }
- $aSpec['spec'][$key]['options'] = implode(',', $opt);
- }
-
- $this->pagedata['specs'] = $aSpec['spec'];
- $this->setView('product/spec_select.html');
- $this->output();
- }
-
- function saveValue($id){
-
- }
-
- function _output(){
- $memberLevel = $this->system->loadModel('member/level');
- $pro_str = $this->system->loadModel('goods/products');
- if (!$this->op->is_super){ //?????????????. yanglish 2010/6/11
- $edit_info = $pro_str->edit_product_info($this->op->opid);
- if ($edit_info['g_p_addNew'] || $edit_info['g_p_info']){
- $this->pagedata['g_p_info'] = 1;
- }
- if ($edit_info['g_p_repertory'] || $edit_info['g_p_addNew']){
- $this->pagedata['g_p_repertory'] = 1;
- }
- if ($edit_info['g_p_price'] || $edit_info['g_p_addNew']){
- $this->pagedata['g_p_price'] = 1;
- }
- $this->pagedata['g_p_addNew'] = $edit_info['g_p_addNew'];
- $this->pagedata['g_p_repertory'] = $edit_info['g_p_repertory'];
- $this->pagedata['g_p_price'] = $edit_info['g_p_price'];
-
- }else{
- $this->pagedata['g_p_info'] = 1;
- $this->pagedata['g_p_repertory'] = 1;
- $this->pagedata['g_p_price'] = 1;
- $this->pagedata['g_p_addNew'] = 1;
- }
- $this->pagedata['mlevels'] = $memberLevel->getList('member_lv_id,dis_count');
- $this->setView('product/spec.html');
- $this->output();
- }
- }