PageRenderTime 52ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/b2b/core/admin/controller/goods/ctl.spec.php

http://phpfor.googlecode.com/
PHP | 432 lines | 373 code | 43 blank | 16 comment | 31 complexity | 110efa15bacd80d871a21fd7f36b9172 MD5 | raw file
  1. <?php
  2. class ctl_spec extends adminPage{
  3. var $workground = 'goods';
  4. function enable(){
  5. $spec = array(
  6. 'product_id'=>array(''),
  7. 'store'=>array($_POST['store']),
  8. 'price'=>array($_POST['price']),
  9. // 'vars'=>array('??','??'),
  10. // 'val'=>array(
  11. // array('?','?'),
  12. // )
  13. );
  14. $this->pagedata['spec'] = $spec;
  15. $this->_output();
  16. }
  17. function addCol(){
  18. $specDesc = unserialize(stripslashes(urldecode($_POST['goods_spec_desc'])));
  19. $objSpec = $this->system->loadModel('goods/specification');
  20. $aSpec = array();
  21. if(empty( $specDesc )){
  22. $aSpec = $objSpec->getListByTypeId($_GET['type_id']);
  23. }
  24. else{
  25. $aSpec = $objSpec->getListByIdArray( array_keys($specDesc) );
  26. foreach( $aSpec as $key => $rows ){
  27. $aSpec[$key]['sel_options'] = $specDesc[$rows['spec_id']];
  28. }
  29. }
  30. foreach($aSpec as $key => $rows){
  31. $aVal = $objSpec->getValueList($rows['spec_id']);
  32. foreach($aVal as $k=>$v){
  33. $aVal[$k]['spec_value'] = htmlspecialchars($v['spec_value'],ENT_QUOTES);
  34. }
  35. $aSpec[$key]['options'] = $aVal ;
  36. $aSpec[$key]['spec_name'] = htmlspecialchars($rows['spec_name'],ENT_QUOTES);
  37. }
  38. if( $_POST['goods'] ){
  39. $this->pagedata['goods_args'] = json_encode( array('goods_args'=>$_POST['goods']));
  40. }
  41. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  42. $this->pagedata['specs'] = $aSpec;
  43. $this->pagedata['ctlType'] = $_POST['ctlType'];
  44. $this->setView('product/spec_addcol.html');
  45. $this->output();
  46. }
  47. function specValue($specId){
  48. $objSpec = $this->system->loadModel('goods/specification');
  49. $aSpec = $objSpec->getFieldById($specId, array('*'));
  50. $aVal = $objSpec->getValueList($specId);
  51. $aSpec['options'] = $aVal ;
  52. $this->pagedata['sItem'] = $aSpec;
  53. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  54. $this->setView('product/spec_value.html');
  55. $this->output();
  56. }
  57. function doCreatePro( $pro, $spec , $goods_args ){
  58. if( empty( $spec ) ){
  59. $res = array();
  60. foreach( $pro as $pk => $pv ){
  61. $res[$pk]['sel_spec'] = $pv;
  62. foreach( $goods_args as $argsk => $argsv )
  63. $res[$pk][$argsk] = $argsv;
  64. }
  65. return $res;
  66. }
  67. $firestSpec = array_shift( $spec );
  68. $rs = array();
  69. foreach( $firestSpec as $sitem ){
  70. foreach( $pro as $pitem ){
  71. $apitem = $pitem ;
  72. array_push( $apitem , $sitem );
  73. $rs[] = $apitem;
  74. }
  75. if( empty($pro) )
  76. $rs[] = array( $sitem );
  77. }
  78. return $this->doCreatePro( $rs, $spec , $goods_args );
  79. }
  80. function selAlbumsImg(){
  81. $this->pagedata['selImgs'] = explode(',',$_POST['selImgs']);
  82. $this->pagedata['img'] = $_POST['img'];
  83. $this->setView('product/spec_selalbumsimg.html');
  84. $this->output();
  85. }
  86. function doAddCol(){
  87. $pro_str = $this->system->loadModel('goods/products');
  88. $_POST = stripslashes_array($_POST);
  89. $memberLevel = $this->system->loadModel('member/level');
  90. $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
  91. $this->pagedata['spec']['vars'] = $_POST['spec_vars'];
  92. $this->pagedata['goods']['spec_value_image'] = $_POST['spec_value_image'];
  93. $this->pagedata['goods']['spec_desc'] = $_POST['goods']['spec_desc'];
  94. $spec_vars = array();
  95. foreach( $_POST['spec_vars'] as $k =>$v )
  96. $spec_vars[$k]['spec_name'] = $v;
  97. $this->pagedata['specname'] = $spec_vars;
  98. $this->pagedata['goods']['spec_desc_str'] = urlencode(serialize($_POST['goods']['spec_desc']));
  99. if( $_POST['goods_args'] ){
  100. $this->pagedata['goods_args'] = json_encode( array( 'goods_args'=>$_POST['goods_args'] ) );
  101. }
  102. $this->pagedata['needUpValue'] = json_encode($_POST['needUpValue']);
  103. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  104. $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
  105. $this->_output();
  106. }
  107. function doSetCol(){
  108. $pro_str = $this->system->loadModel('goods/products');
  109. if (!$this->op->is_super){ //?????????????.
  110. $edit_info = $pro_str->edit_product_info($this->op->opid);
  111. if ($edit_info['g_p_info'] || $edit_info['g_p_addNew']){
  112. $this->pagedata['g_p_info'] = 1;
  113. }
  114. if ($edit_info['g_p_repertory'] || $edit_info['g_p_addNew']){
  115. $this->pagedata['g_p_repertory'] = 1;
  116. }
  117. if ($edit_info['g_p_price'] || $edit_info['g_p_addNew']){
  118. $this->pagedata['g_p_price'] = 1;
  119. }
  120. $this->pagedata['g_p_addNew'] = $edit_info['g_p_addNew'];
  121. }else{
  122. $this->pagedata['g_p_info'] = 1;
  123. $this->pagedata['g_p_repertory'] = 1;
  124. $this->pagedata['g_p_price'] = 1;
  125. $this->pagedata['g_p_addNew'] = 1;
  126. }
  127. $_POST = stripslashes_array($_POST);
  128. $memberLevel = $this->system->loadModel('member/level');
  129. $this->pagedata['spec']['vars'] = $_POST['spec_vars'];
  130. $this->pagedata['goods']['spec_value_image'] = $_POST['spec_value_image'];
  131. $this->pagedata['goods']['spec_desc'] = $_POST['goods']['spec_desc'];
  132. $spec_vars = array();
  133. foreach( $_POST['spec_vars'] as $k =>$v )
  134. $spec_vars[$k]['spec_name'] = $v;
  135. $this->pagedata['specname'] = $spec_vars;
  136. $this->pagedata['goods']['spec_desc_str'] = urlencode(serialize($_POST['goods']['spec_desc']));
  137. if( $_POST['goods_args'] ){
  138. $this->pagedata['goods_args'] = json_encode( array( 'goods_args'=>$_POST['goods_args'] ) );
  139. }
  140. if( $_GET['create'] == 'true' ){
  141. $pro = array();
  142. $spec = array();
  143. $i = 1;
  144. foreach( $_POST['goods']['spec_desc'] as $sid => $sitem ){
  145. $j = 1;
  146. foreach( $sitem as $psid => $psitem ){
  147. $spec[$i][$j] = array(
  148. 'spec_id'=>$sid,
  149. 'p_spec_value_id'=>$psid,
  150. 'spec_value'=>$psitem['spec_value'],
  151. 'spec_type'=>$psitem['spec_type'],
  152. 'spec_value_id'=>$psitem['spec_value_id'],
  153. 'spec_image'=>$psitem['spec_image'],
  154. 'spec_goods_images'=>$psitem['spec_goods_images']
  155. );
  156. $j++;
  157. }
  158. $i++;
  159. }
  160. $pro = $this->doCreatePro( $pro, $spec , $_POST['goods_args'] );
  161. $this->pagedata['goods']['products'] = $pro;
  162. $this->pagedata['fromType'] = 'create';
  163. }
  164. $this->pagedata['needUpValue'] = json_encode($_POST['needUpValue']);
  165. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  166. $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
  167. $this->pagedata['mlevels'] = $memberLevel->getList('member_lv_id,dis_count');
  168. $this->setView('product/spec_list.html');
  169. $this->output();
  170. }
  171. function addSpecTab(){
  172. $objSpec = $this->system->loadModel('goods/specification');
  173. $spec = $objSpec->getFieldById($_POST['spec_id'], array('*'));
  174. $spec['spec_name'] = htmlspecialchars($spec['spec_name'],ENT_QUOTES);
  175. $specValue = $objSpec->getValueList($_POST['spec_id']);
  176. foreach($specValue as $k=>$v){
  177. $specValue[$k]['spec_value'] = htmlspecialchars($v['spec_value'],ENT_QUOTES);
  178. }
  179. $this->pagedata['spec'] = $spec;
  180. $this->pagedata['specValue'] = $specValue;
  181. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  182. $this->setView('product/spec_addspectab.html');
  183. $this->output();
  184. }
  185. function addSpecValue(){
  186. $_POST = stripslashes_array($_POST);
  187. foreach( $_POST['spec'] as $k => $v ){
  188. if($k == 'specValue'){
  189. $v = htmlspecialchars($v,ENT_QUOTES);
  190. }
  191. $this->pagedata[$k] = $v;
  192. }
  193. $this->pagedata['pSpecId'] = time().$_POST['sIteration'];
  194. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  195. $this->setView('product/spec_addspecvalue.html');
  196. $this->output();
  197. }
  198. function addRow(){
  199. /*
  200. foreach($_POST['vars'] as $d=>$vs){
  201. $vars[] = array('id'=>$d,'name'=>$vs,'vars'=>json_encode(array_unique($_POST['val'][$d])));
  202. }
  203. */
  204. if( $_POST['bn'] ){
  205. // ???????? ????+1 ???xxx-1 ???????xxx-2 2010-01-25 wubin
  206. if(!empty($_POST['bn'][0])) {
  207. $_POST['bn'][0]=substr($_POST['bn'][0],0,-1).(substr($_POST['bn'][0],-1)+1);
  208. }
  209. //error_log(print_r($_POST['store'],true),3,"d:/2.txt");
  210. $_POST['goods_args'] = array(
  211. 'price' => $_POST['price'][0],
  212. 'cost' => $_POST['cost'][0],
  213. 'product_bn' => stripslashes($_POST['bn'][0]),
  214. 'weight' => $_POST['weight'][0],
  215. 'store' => $_POST['store'][0]
  216. );
  217. foreach( $_POST['mprice'] as $mpk => $mpv ){
  218. $_POST['goods_args']['mprice'][$mpk] = $mpv[0];
  219. }
  220. }
  221. $spec_desc = unserialize(stripslashes( $_POST['spec_desc'] ));
  222. $memberLevel = $this->system->loadModel('member/level');
  223. $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
  224. $this->pagedata['goods']['spec_desc'] = $spec_desc;
  225. $this->pagedata['goods_args'] = $_POST['goods_args'];
  226. $this->pagedata['spec_default_pic'] = $this->system->getConf('spec.default.pic');
  227. $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
  228. $this->setView('product/spec_row.html');
  229. $this->output();
  230. }
  231. function delCol($varid){
  232. $spec = $_POST;
  233. $ns=array();
  234. foreach($_POST['product_id'] as $key=>$product_id){
  235. $n = '';
  236. foreach($_POST['val'] as $d=>$vs){
  237. if($d!=$varid){
  238. $n.=$vs[$key];
  239. }
  240. }
  241. if(isset($ns[$n])){
  242. $spec['price'][$ns[$n]]+=$spec['price'][$key];
  243. unset($spec['product_id'][$key]);
  244. }else{
  245. $ns[$n] = $key;
  246. }
  247. }
  248. unset($spec['vars'][$varid]);
  249. $this->pagedata['spec'] = $spec;
  250. $this->_output();
  251. }
  252. // function selectSpec($specid){
  253. // $objSpec = $this->system->loadModel('goods/specification');
  254. // $aSpecValue = $objSpec->getValueList($specid);
  255. // echo json_encode($aSpecValue);
  256. // }
  257. function doAddRow(){
  258. $spec = $_POST;
  259. $spec['product_id'][] = '';
  260. foreach($_POST['val'] as $d=>$vs){
  261. $spec['val'][$d][] = $_POST['_r_var'][$d];
  262. }
  263. $spec['price'][] = array();
  264. $this->pagedata['spec'] = $spec;
  265. $memberLevel = $this->system->loadModel('member/level');
  266. $this->pagedata['mLevels'] = $memberLevel->getList('member_lv_id,dis_count');
  267. $this->pagedata['goodsspace_display_switch'] = $this->system->getConf('goodspace.display.switch');
  268. $this->_output();
  269. }
  270. function getSpecArray($i,$array,$result,&$aRet) {
  271. if (count($result) == count($array)){
  272. $aRet[] = $result;
  273. return ;
  274. }
  275. foreach ($array[$i] as $j => $v){
  276. array_push($result,$v);
  277. $this->getSpecArray($i+1, $array, $result, $aRet);
  278. array_pop($result);
  279. }
  280. }
  281. function selectSpec(){
  282. $objSpec = $this->system->loadModel('goods/specification');
  283. $aSpec = $objSpec->getArrayById();
  284. echo '???<select name="new_spec_id" onchange="selectSpec(this)">';
  285. echo '<option value="">- ??? -</option>';
  286. foreach($aSpec as $k => $v){
  287. echo '<option value="'.$k.'">'.$v.'</option>';
  288. }
  289. echo '</select>';
  290. }
  291. function selectVal($specid, $valid){
  292. $objSpec = $this->system->loadModel('goods/specification');
  293. $aValue = $objSpec->getValueList($specid);
  294. echo '<select name="value_id[]" onchange="selectValue(this,'.$specid.')">';
  295. echo '<option value="">- ??? -</option>';
  296. foreach($aValue as $v){
  297. echo '<option value="'.$v['spec_value_id'].'"'.($v['spec_value_id']==$valid ? ' selected' : '').'>'.$v['spec_value'].'</option>';
  298. }
  299. echo '</select>';
  300. }
  301. function removeSpec($id){
  302. $objSpec = $this->system->loadModel('goods/specification');
  303. $objSpec->toRemove($id);
  304. $aSpec = $objSpec->getList(0, 1000);
  305. foreach($aSpec['spec'] as $key => $rows){
  306. $aVal = $objSpec->getValueList($rows['spec_id']);
  307. $opt = array();
  308. foreach($aVal as $vals){
  309. $opt[] = $vals['spec_value'];
  310. }
  311. $aSpec['spec'][$key]['options'] = implode(',', $opt);
  312. }
  313. $this->pagedata['specs'] = $aSpec['spec'];
  314. $this->setView('product/spec_select.html');
  315. $this->output();
  316. }
  317. function addSpec($typeId = 0) {
  318. $objSpec = $this->system->loadModel('goods/specification');
  319. $aSpec = array();
  320. if($typeId)
  321. $aSpec = $objSpec->getListByTypeId($typeId);
  322. else
  323. $aSpec = $objSpec->getListByIdArray();
  324. $this->pagedata['specs'] = $aSpec;
  325. $this->setView('product/spec_select.html');
  326. $this->output();
  327. }
  328. function saveSpec($id){
  329. $objSpec = $this->system->loadModel('goods/specification');
  330. $objSpec->toRemove($id);
  331. $aSpec = $objSpec->getList(0, 1000);
  332. foreach($aSpec['spec'] as $key => $rows){
  333. $aVal = $objSpec->getValueList($rows['spec_id']);
  334. $opt = array();
  335. foreach($aVal as $vals){
  336. $opt[] = $vals['spec_value'];
  337. }
  338. $aSpec['spec'][$key]['options'] = implode(',', $opt);
  339. }
  340. $this->pagedata['specs'] = $aSpec['spec'];
  341. $this->setView('product/spec_select.html');
  342. $this->output();
  343. }
  344. function removeValue($specid, $val){
  345. $objSpec = $this->system->loadModel('goods/specification');
  346. $objSpec->toRemoveValue($val, $specid);
  347. $aSpec = $objSpec->getList(0, 1000);
  348. foreach($aSpec['spec'] as $key => $rows){
  349. $aVal = $objSpec->getValueList($rows['spec_id']);
  350. $opt = array();
  351. foreach($aVal as $vals){
  352. $opt[] = $vals['spec_value'];
  353. }
  354. $aSpec['spec'][$key]['options'] = implode(',', $opt);
  355. }
  356. $this->pagedata['specs'] = $aSpec['spec'];
  357. $this->setView('product/spec_select.html');
  358. $this->output();
  359. }
  360. function saveValue($id){
  361. }
  362. function _output(){
  363. $memberLevel = $this->system->loadModel('member/level');
  364. $pro_str = $this->system->loadModel('goods/products');
  365. if (!$this->op->is_super){ //?????????????. yanglish 2010/6/11
  366. $edit_info = $pro_str->edit_product_info($this->op->opid);
  367. if ($edit_info['g_p_addNew'] || $edit_info['g_p_info']){
  368. $this->pagedata['g_p_info'] = 1;
  369. }
  370. if ($edit_info['g_p_repertory'] || $edit_info['g_p_addNew']){
  371. $this->pagedata['g_p_repertory'] = 1;
  372. }
  373. if ($edit_info['g_p_price'] || $edit_info['g_p_addNew']){
  374. $this->pagedata['g_p_price'] = 1;
  375. }
  376. $this->pagedata['g_p_addNew'] = $edit_info['g_p_addNew'];
  377. $this->pagedata['g_p_repertory'] = $edit_info['g_p_repertory'];
  378. $this->pagedata['g_p_price'] = $edit_info['g_p_price'];
  379. }else{
  380. $this->pagedata['g_p_info'] = 1;
  381. $this->pagedata['g_p_repertory'] = 1;
  382. $this->pagedata['g_p_price'] = 1;
  383. $this->pagedata['g_p_addNew'] = 1;
  384. }
  385. $this->pagedata['mlevels'] = $memberLevel->getList('member_lv_id,dis_count');
  386. $this->setView('product/spec.html');
  387. $this->output();
  388. }
  389. }