function getOutNumbers($type)
 {
     $arr = $this->where(array('type' => $type))->select();
     $re = get_new_array($arr, 'number');
     if (count($re) < 1) {
         $re[0] = 0;
     }
     return $re;
 }
 public function getGrades()
 {
     if ($gs = S('grades')) {
         return $gs;
     }
     $gs = $this->field('grade')->group('grade')->select();
     S('grades', get_new_array($gs, 'grade'));
     return S('grades');
 }
 function getRank($type, $limit = 10, $order = "score DESC")
 {
     $map = array('type' => $type);
     if (isset($_GET['grade']) && in_array($_GET['grade'], D('User')->getGrades())) {
         $map['grade'] = $_GET['grade'];
     }
     $arr = $this->where($map)->order($order)->limit($limit)->select();
     $nos = get_new_array($arr, 'number');
     if (count($nos) > 0) {
         $users = D('User')->where(array('number' => array('in', $nos)))->select();
         $this->setAvatarSession($users);
         $re = array();
         foreach ($users as $user) {
             foreach ($arr as $v) {
                 if ($user['number'] == $v['number']) {
                     $user['score'] = $v['score'];
                     break;
                 }
             }
             $re[] = $user;
         }
         usort($re, "cmp");
         return $re;
     }
     return array();
 }
 function rank()
 {
     if (isset($_GET['type'])) {
         $type = $_GET['type'];
         $types = D('ScoreField')->getScoreFields();
         if (in_array($type, get_new_array($types, 'name'))) {
             $order = "score DESC";
             if (isset($_GET['order']) && $_GET['order'] != 'desc') {
                 $order = "score ASC";
             }
             $sum = 12;
             if (session('admin') != null && isset($_GET['sum']) && $_GET['sum'] > 0) {
                 $sum = $_GET['sum'];
             }
             $users = D('Score')->getRank($type, $sum, $order);
             $this->assign('users', $users);
             $this->display();
         }
     } else {
         redirect(U('Index/index'));
     }
 }