github.com/Ptt-official-app/go-bbs@v0.12.0/pttbbs/usersettings.go (about) 1 // 實作幾個 method 傳入 userid 回傳該使用者的 BBS 設定 2 // 目前已經有可以取得使用者userec的method可用了 3 // 4 // 請見 userec_t 中的 uflag 和 userlevel 5 // 每個選項對應的 flag id 請參見 user.c desc1 和 masks1 6 // user.c - https://github.com/ptt/pttbbs/blob/5715b35f510f48eb5092d32882f1aa09181dc3a1/mbbsd/user.c#L438 7 // uflags.h - https://github.com/ptt/pttbbs/blob/4d56e77f264960e43e060b77e442e166e5706417/include/uflags.h 8 9 package pttbbs 10 11 import ( 12 "fmt" 13 14 "github.com/Ptt-official-app/go-bbs" 15 ) 16 17 var userRecs []bbs.UserRecord 18 19 // (Question) I'm not sure how to access this function from serverlet/route_token.go 20 func findUserecByID(userid string) (bbs.UserRecord, error) { 21 for _, it := range userRecs { 22 if userid == it.UserID() { 23 return it, nil 24 } 25 } 26 return nil, fmt.Errorf("user record not found") 27 } 28 29 // get ALL UserFlag at once: 30 type uFlags struct { 31 dbanner bool 32 dbannerUsong bool 33 rejOuttamail bool 34 defBackup bool 35 secureLogin bool 36 favAddnew bool 37 favNohilight bool 38 noModmark bool 39 coloredModmark bool 40 dbcsAware bool 41 dbcsDropRepeat bool 42 dbcsNointresc bool 43 cursorASCII bool 44 menuLightbar bool 45 newAngelPager bool 46 } 47 48 func getUserFlagAllByID(userid string) (*uFlags, error) { 49 userrec, err := findUserecByID(userid) 50 if err != nil { 51 return nil, fmt.Errorf("user record not found") 52 } 53 dbanner := getAdbannerByUserrec(userrec) 54 dbannerUsong := getAdbannerUsongByUserrec(userrec) 55 rejOuttamail := getRejOuttamailByUserrec(userrec) 56 defBackup := getDefBackupByUserrec(userrec) 57 secureLogin := getSecureLoginByUserrec(userrec) 58 favAddnew := getFavAddNewByUserrec(userrec) 59 favNohilight := getFavNoHilightByUserrec(userrec) 60 noModmark := getFavNoModMarkByUserrec(userrec) 61 coloredModmark := getColoredModMarkByUserrec(userrec) 62 // TO DO...#ifdef DBCSAWARE 63 dbcsAware := getDbcsAwareByUserrec(userrec) 64 dbcsDropRepeat := getDbcsDropRepeatByUserrec(userrec) 65 dbcsNointresc := getDbcsNointrescByUserrec(userrec) 66 // #endif 67 cursorASCII := getCursorASCIIByUserrec(userrec) 68 // TO DO...#ifdef USE_PFTERM 69 menuLightbar := getMenuLightBarByUserrec(userrec) 70 // #endif 71 // TO DO...#ifdef PLAY_ANGEL 72 newAngelPager := getNewAngelPagerByUserrec(userrec) 73 // #endif 74 75 return &uFlags{ 76 dbanner, 77 dbannerUsong, 78 rejOuttamail, 79 defBackup, 80 secureLogin, 81 favAddnew, 82 favNohilight, 83 noModmark, 84 coloredModmark, 85 dbcsAware, 86 dbcsDropRepeat, 87 dbcsNointresc, 88 cursorASCII, 89 menuLightbar, 90 newAngelPager}, nil 91 } 92 93 func getAdbannerByUserrec(userrec bbs.UserRecord) bool { 94 return userrec.UserFlag()&UfAdbanner != 0 95 } 96 97 func getAdbannerUsongByUserrec(userrec bbs.UserRecord) bool { 98 return userrec.UserFlag()&UfAdbannerUsong != 0 99 } 100 101 func getRejOuttamailByUserrec(userrec bbs.UserRecord) bool { 102 return userrec.UserFlag()&UfRejOuttamail != 0 103 } 104 105 func getDefBackupByUserrec(userrec bbs.UserRecord) bool { 106 return userrec.UserFlag()&UfDefbackup != 0 107 } 108 109 func getSecureLoginByUserrec(userrec bbs.UserRecord) bool { 110 return userrec.UserFlag()&UfSecureLogin != 0 111 } 112 113 func getFavAddNewByUserrec(userrec bbs.UserRecord) bool { 114 return userrec.UserFlag()&UfFavAddnew != 0 115 } 116 117 func getFavNoHilightByUserrec(userrec bbs.UserRecord) bool { 118 return userrec.UserFlag()&UfFavNohilight != 0 119 } 120 121 func getFavNoModMarkByUserrec(userrec bbs.UserRecord) bool { 122 return userrec.UserFlag()&UfNoModmark != 0 123 } 124 125 func getColoredModMarkByUserrec(userrec bbs.UserRecord) bool { 126 return userrec.UserFlag()&UfColoredModmark != 0 127 } 128 129 // #ifdef DBCSAWARE (Not handling yet...) 130 func getDbcsAwareByUserrec(userrec bbs.UserRecord) bool { 131 return userrec.UserFlag()&UfDbcsAware != 0 132 } 133 134 // #ifdef DBCSAWARE (Not handling yet...) 135 func getDbcsDropRepeatByUserrec(userrec bbs.UserRecord) bool { 136 return userrec.UserFlag()&UfDbscDropRepeat != 0 137 } 138 139 // #ifdef DBCSAWARE (Not handling yet...) 140 func getDbcsNointrescByUserrec(userrec bbs.UserRecord) bool { 141 return userrec.UserFlag()&UfDbcsNointresc != 0 142 } 143 144 func getCursorASCIIByUserrec(userrec bbs.UserRecord) bool { 145 return userrec.UserFlag()&UfCursorASCII != 0 146 } 147 148 // #ifdef USE_PFTERM (Not handling yet...) 149 func getMenuLightBarByUserrec(userrec bbs.UserRecord) bool { 150 return userrec.UserFlag()&UfMenuLightbar != 0 151 } 152 153 // #ifdef PLAY_ANGEL (Not handling yet...) 154 func getNewAngelPagerByUserrec(userrec bbs.UserRecord) bool { 155 return userrec.UserFlag()&UfNewAngelPager != 0 156 }