Example #1
0
 /**
  * 重新设置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;
     }
 }