/** * 重新设置session * * @param string $uid * @return unknown */ public function upcache($uid, $upcache = true) { if ((int) $uid <= 0) { return; } $cateList = DB::select('cate_id', 'path', 'parent_id')->from('img_categories')->where('uid', '=', (int) $uid)->fetch_all(); if (!empty($cateList)) { $cates = new Category(); foreach ($cateList as $cate) { $ids = $cates->getAllChilds($cate['cate_id']); $ids[] = $cate['cate_id']; $num = ORM::factory('img')->where('userid', '=', (int) $uid)->where('cate_id', 'in', $ids)->count_all(); DB::update('img_categories')->set(array('img_num' => $num))->where('uid', '=', (int) $uid)->where('cate_id', '=', (int) $cate['cate_id'])->execute(); } } $rows = DB::select(array('sum("filesize")', 'total_size'), array('count("userid")', 'total_num'))->from('imgs')->where('userid', '=', (int) $uid)->fetch_row(); DB::update('users')->set(array('use_space' => $rows['total_size'], 'count_img' => $rows['total_num']))->where('uid', '=', (int) $uid)->execute(); $user = $this->where('uid', '=', $uid)->find(); if ($user->_loaded) { $result = $user->as_array(); $result['field'] = $this->field->as_array(); $result['group'] = DB::select()->from('imgup_group')->where('id', '=', $result['rank'])->execute()->current(); $rows = DB::select()->from('user_roles')->where('uid', '=', (int) $result['uid'])->execute()->as_array(); $arr = array(); foreach ($rows as $row) { $arr[$row['mod_name']] = $row; } $result['roles'] = $arr; if ($upcache) { $this->session_save('user', $result); } return $result; } else { return 0; } }