function get_child_cids($id, $parent) { if (isset($parent[$id])) { $cids[] = $id; foreach ($parent[$id] as $k => $v) { if (isset($parent[$k])) { $cids = array_merge($cids, get_child_cids($k, $parent)); } else { $cids[] = $k; } } } else { $cids[] = $id; } return $cids; }
function search($page = NULL, $posts = NULL) { $keys = NULL; if ($posts) { $keys = @unserialize(base64_decode($posts)); if (!is_array($keys)) { info_page('错误的参数'); } } $keys['searchtxt'] = isset($keys['searchtxt']) && $keys['searchtxt'] ? z($keys['searchtxt']) : NULL; $cates = get_shop_cates(); if (isset($keys['cate']) && intval($keys['cate']) > 0 && isset($cates[intval($keys['cate'])])) { if ($cates) { foreach ($cates as $v) { $parent[$v['pid']][$v['id']] = $v['orders']; } $cids = get_child_cids(intval($keys['cate']), $parent); $keys['cates'] = $cids; } else { $keys['cates'] = NULL; } } else { $keys['cates'] = NULL; } $page = intval($page) > 0 ? intval($page) : 1; $limit = 10; $start = ($page - 1) * $limit; $data['list'] = $this->shop->get_search_items($start, $limit, $keys); $all = get_count(); $page_all = ceil($all / $limit); $keeps = array(); $wishes = array(); if ($data['list']) { foreach ($data['list'] as $v) { $sids[$v['id']] = $v['id']; } $keeps = $this->shop->get_wishlist_with_ids($sids, 1); $wishes = $this->shop->get_wishlist_with_ids($sids, 2); } $data['keeps'] = $keeps; $data['wishes'] = $wishes; $data['pager'] = get_pager($page, $page_all, '/shop/search', $posts); $data['nav'] = array('搜索结果列表'); $data['cates'] = $cates; $data['brands'] = $this->shop->get_brands(); unset($keys['cates']); $set = NULL; if ($keys) { foreach ($keys as $k => $v) { $set .= "set( '" . $k . "' , '" . add_slashes_on_quote($v) . "' );"; } } $data['set'] = $set; $data['views'] = $this->get_viewed_item(); $this->view('search', $data); }