├── app ├── tmp │ ├── compile │ │ └── empty │ └── cache │ │ ├── asset │ │ └── empty │ │ ├── nforum │ │ └── empty │ │ └── thumbnail │ │ └── empty ├── views │ ├── left.tpl │ ├── footer.tpl │ ├── header.tpl │ ├── reg │ │ ├── form.tpl │ │ └── index.tpl │ ├── adv │ │ └── index.tpl │ ├── board │ │ ├── mode.tpl │ │ ├── vote.tpl │ │ ├── index.tpl │ │ ├── denylist.tpl │ │ └── vote_que.tpl │ ├── elite │ │ ├── file.tpl │ │ └── path.tpl │ ├── forum │ │ ├── pre.tpl │ │ ├── flink.tpl │ │ ├── front.tpl │ │ ├── index.tpl │ │ └── online.tpl │ ├── mail │ │ ├── index.tpl │ │ └── send.tpl │ ├── pagination.tpl │ ├── user │ │ ├── info.tpl │ │ ├── query.tpl │ │ ├── custom.tpl │ │ └── passwd.tpl │ ├── widget │ │ └── add.tpl │ ├── article │ │ ├── cross.tpl │ │ ├── edit.tpl │ │ ├── index.tpl │ │ ├── post.tpl │ │ ├── tmpl.tpl │ │ ├── forward.tpl │ │ ├── manage.tpl │ │ ├── preview.tpl │ │ ├── single.tpl │ │ └── tmpl_que.tpl │ ├── error │ │ ├── error.tpl │ │ └── error404.tpl │ ├── favor │ │ └── index.tpl │ ├── friend │ │ ├── index.tpl │ │ └── online.tpl │ ├── refer │ │ └── index.tpl │ ├── search │ │ ├── index.tpl │ │ └── article.tpl │ ├── section │ │ └── index.tpl │ ├── attachment │ │ ├── edit.tpl │ │ └── upload.tpl │ ├── blacklist │ │ └── index.tpl │ ├── syntax_high_lighter.tpl │ ├── s_nav.tpl │ ├── css.tpl │ └── script.tpl ├── shells │ ├── weather.php │ ├── example.php │ ├── install.php │ ├── widgetvalid.php │ └── buildasset.php ├── controllers │ ├── Mail.php │ ├── Reg.php │ ├── Rss.php │ ├── User.php │ ├── Article.php │ ├── Board.php │ ├── Elite.php │ ├── Favor.php │ ├── Forum.php │ ├── Friend.php │ ├── Refer.php │ ├── Search.php │ ├── Section.php │ ├── Widget.php │ ├── Blacklist.php │ ├── Attachment.php │ └── Error.php ├── modules │ ├── Api │ │ ├── controllers │ │ │ ├── Vote.php │ │ │ ├── User.php │ │ │ ├── Error.php │ │ │ ├── Section.php │ │ │ ├── Board.php │ │ │ └── Blacklist.php │ │ ├── shells │ │ │ └── sessionclean.php │ │ ├── lib │ │ │ ├── basic_auth.php │ │ │ ├── session.php │ │ │ └── controller.php │ │ ├── pl_api.sql │ │ └── route.php │ ├── Mobile │ │ ├── lib │ │ │ └── controller.php │ │ ├── views │ │ │ ├── footer.tpl │ │ │ ├── index │ │ │ │ ├── hot.tpl │ │ │ │ └── index.tpl │ │ │ ├── mail │ │ │ │ ├── index.tpl │ │ │ │ ├── send.tpl │ │ │ │ ├── show.tpl │ │ │ │ └── forward.tpl │ │ │ ├── user │ │ │ │ └── query.tpl │ │ │ ├── article │ │ │ │ ├── index.tpl │ │ │ │ ├── post.tpl │ │ │ │ ├── forward.tpl │ │ │ │ └── single.tpl │ │ │ ├── board │ │ │ │ └── index.tpl │ │ │ ├── error │ │ │ │ └── error.tpl │ │ │ ├── favor │ │ │ │ └── index.tpl │ │ │ ├── friend │ │ │ │ └── online.tpl │ │ │ ├── refer │ │ │ │ └── index.tpl │ │ │ ├── section │ │ │ │ └── index.tpl │ │ │ └── header.tpl │ │ ├── controllers │ │ │ ├── Mail.php │ │ │ ├── User.php │ │ │ ├── Article.php │ │ │ ├── Board.php │ │ │ ├── Error.php │ │ │ ├── Favor.php │ │ │ ├── Friend.php │ │ │ ├── Index.php │ │ │ ├── Refer.php │ │ │ └── Section.php │ │ └── route.php │ └── Vote │ │ ├── views │ │ └── index │ │ │ ├── add.tpl │ │ │ ├── view.tpl │ │ │ ├── vote.tpl │ │ │ └── index.tpl │ │ ├── controllers │ │ └── Index.php │ │ ├── route.php │ │ └── shells │ │ └── statistics.php └── plugins │ ├── Module.php │ ├── Uaacl.php │ ├── Ipacl.php │ └── Redirect.php ├── www ├── uploadFace │ └── empty ├── files │ ├── imgupload │ │ └── empty │ ├── audio │ │ └── mail.wav │ └── swf │ │ ├── Jplayer.swf │ │ └── plupload.flash.swf ├── js │ ├── vote.js │ ├── forum.adv.js │ ├── forum.fav.js │ ├── forum.lib.js │ ├── forum.reg.js │ ├── forum.board.js │ ├── forum.config.js │ ├── forum.friend.js │ ├── forum.mail.js │ ├── forum.manage.js │ ├── forum.refer.js │ ├── forum.search.js │ ├── forum.share.js │ ├── forum.upload.js │ ├── forum.widget.js │ ├── forum.xubb.js │ ├── forum.article.js │ ├── forum.control.js │ ├── forum.keyboard.js │ ├── forum.elite.js │ ├── forum.pre.js │ ├── forum.tmpl.js │ ├── html5.js │ ├── jquery.placeholder.min.js │ └── jquery.cookie.js ├── favicon.ico ├── img │ ├── ico.gif │ ├── logo.gif │ ├── ubb │ │ ├── img.gif │ │ ├── map.gif │ │ ├── url.gif │ │ ├── bold.gif │ │ ├── center.gif │ │ ├── code.gif │ │ ├── em │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 57.gif │ │ │ ├── 58.gif │ │ │ ├── 59.gif │ │ │ ├── 6.gif │ │ │ ├── 60.gif │ │ │ ├── 61.gif │ │ │ ├── 62.gif │ │ │ ├── 63.gif │ │ │ ├── 64.gif │ │ │ ├── 65.gif │ │ │ ├── 66.gif │ │ │ ├── 67.gif │ │ │ ├── 68.gif │ │ │ ├── 69.gif │ │ │ ├── 7.gif │ │ │ ├── 70.gif │ │ │ ├── 71.gif │ │ │ ├── 72.gif │ │ │ ├── 73.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── ema │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 5.gif │ │ │ ├── 6.gif │ │ │ ├── 7.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── emb │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 3.gif │ │ │ ├── 4.gif │ │ │ ├── 5.gif │ │ │ ├── 6.gif │ │ │ ├── 7.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── emc │ │ │ ├── 0.gif │ │ │ ├── 1.gif │ │ │ ├── 10.gif │ │ │ ├── 11.gif │ │ │ ├── 12.gif │ │ │ ├── 13.gif │ │ │ ├── 14.gif │ │ │ ├── 15.gif │ │ │ ├── 16.gif │ │ │ ├── 17.gif │ │ │ ├── 18.gif │ │ │ ├── 19.gif │ │ │ ├── 2.gif │ │ │ ├── 20.gif │ │ │ ├── 21.gif │ │ │ ├── 22.gif │ │ │ ├── 23.gif │ │ │ ├── 24.gif │ │ │ ├── 25.gif │ │ │ ├── 26.gif │ │ │ ├── 27.gif │ │ │ ├── 28.gif │ │ │ ├── 29.gif │ │ │ ├── 3.gif │ │ │ ├── 30.gif │ │ │ ├── 31.gif │ │ │ ├── 32.gif │ │ │ ├── 33.gif │ │ │ ├── 34.gif │ │ │ ├── 35.gif │ │ │ ├── 36.gif │ │ │ ├── 37.gif │ │ │ ├── 38.gif │ │ │ ├── 39.gif │ │ │ ├── 4.gif │ │ │ ├── 40.gif │ │ │ ├── 41.gif │ │ │ ├── 42.gif │ │ │ ├── 43.gif │ │ │ ├── 44.gif │ │ │ ├── 45.gif │ │ │ ├── 46.gif │ │ │ ├── 47.gif │ │ │ ├── 48.gif │ │ │ ├── 49.gif │ │ │ ├── 5.gif │ │ │ ├── 50.gif │ │ │ ├── 51.gif │ │ │ ├── 52.gif │ │ │ ├── 53.gif │ │ │ ├── 54.gif │ │ │ ├── 55.gif │ │ │ ├── 56.gif │ │ │ ├── 57.gif │ │ │ ├── 58.gif │ │ │ ├── 6.gif │ │ │ ├── 7.gif │ │ │ ├── 8.gif │ │ │ └── 9.gif │ │ ├── face.gif │ │ ├── flash.gif │ │ ├── italic.gif │ │ ├── left.gif │ │ ├── mail.gif │ │ ├── media.gif │ │ ├── music.gif │ │ ├── quote.gif │ │ ├── real.gif │ │ ├── right.gif │ │ ├── quicktime.gif │ │ ├── underline.gif │ │ └── mv.sh │ ├── app │ │ ├── hover.gif │ │ ├── weather │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ └── 8.png │ │ └── icon │ │ │ └── default.png │ ├── vote │ │ ├── clock.gif │ │ ├── user.gif │ │ ├── vote.gif │ │ ├── chart_bar.gif │ │ ├── chart_pie.gif │ │ ├── vote_num.gif │ │ └── color_swatch.gif │ ├── logo_footer.gif │ ├── face_default_f.jpg │ ├── face_default_m.jpg │ ├── ui │ │ ├── ui-icons_217bc0_256x240.png │ │ ├── ui-icons_2e83ff_256x240.png │ │ ├── ui-icons_469bdd_256x240.png │ │ ├── ui-icons_6da8d5_256x240.png │ │ ├── ui-icons_cd0a0a_256x240.png │ │ ├── ui-icons_d8e7f3_256x240.png │ │ ├── ui-icons_f9bd01_256x240.png │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ ├── ui-bg_flat_55_fbec88_40x100.png │ │ ├── ui-bg_glass_75_d0e5f5_1x400.png │ │ ├── ui-bg_glass_85_dfeffc_1x400.png │ │ ├── ui-bg_glass_95_fef1ec_1x400.png │ │ ├── ui-bg_gloss-wave_55_5c9ccc_500x100.png │ │ ├── ui-bg_inset-hard_100_f5f8f9_1x100.png │ │ └── ui-bg_inset-hard_100_fcfdfd_1x100.png │ └── jplayer.blue.monday │ │ ├── jplayer.blue.monday.jpg │ │ └── jplayer.blue.monday.seeking.gif ├── css │ ├── common.css │ ├── preindex.css │ ├── error.css │ ├── favor.css │ ├── flink.css │ ├── register.css │ ├── ubb.css │ ├── search.css │ ├── article.css │ ├── login.css │ ├── keyboard.css │ ├── m.css │ ├── widget.css │ ├── control.css │ ├── mail.css │ ├── adv.css │ ├── post.css │ └── board.css ├── .htaccess ├── crossdomain.xml └── index.php ├── README.md ├── conf ├── code.php ├── nforum.example.php ├── redirectacl.php ├── ipacl.php ├── uaacl.php └── route.php ├── crontab.example ├── lib ├── inc │ ├── astro.php │ ├── exif.php │ ├── ubb.php │ ├── font │ │ ├── 0.ttf │ │ ├── 1.ttf │ │ ├── 10.ttf │ │ ├── 2.ttf │ │ ├── 3.ttf │ │ ├── 4.ttf │ │ ├── 5.ttf │ │ ├── 6.ttf │ │ ├── 7.ttf │ │ ├── 8.ttf │ │ └── 9.ttf │ ├── pagination.php │ ├── views │ │ ├── json.php │ │ ├── xml.php │ │ └── html.php │ ├── cli.php │ ├── xml.php │ ├── shell.php │ ├── cookie.php │ ├── view.php │ ├── packer.php │ ├── thumbnail.php │ ├── json.php │ └── route.php ├── model │ ├── board.php │ ├── favor.php │ ├── mail.php │ ├── refer.php │ ├── user.php │ ├── archive.php │ ├── friend.php │ ├── iwidget.php │ ├── section.php │ ├── overload.php │ ├── onlineuser.php │ ├── collection.php │ ├── blacklist.php │ └── template.php └── widget │ ├── vote.php │ ├── classic.php │ ├── topten.php │ └── weather.php ├── bin └── cli ├── .htaccess ├── .gitignore └── sql └── common.sql /app/tmp/compile/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /www/uploadFace/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tmp/cache/asset/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tmp/cache/nforum/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /www/files/imgupload/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tmp/cache/thumbnail/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/README.md -------------------------------------------------------------------------------- /conf/code.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/conf/code.php -------------------------------------------------------------------------------- /www/js/vote.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/vote.js -------------------------------------------------------------------------------- /crontab.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/crontab.example -------------------------------------------------------------------------------- /lib/inc/astro.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/astro.php -------------------------------------------------------------------------------- /lib/inc/exif.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/exif.php -------------------------------------------------------------------------------- /lib/inc/ubb.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/ubb.php -------------------------------------------------------------------------------- /www/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/favicon.ico -------------------------------------------------------------------------------- /www/img/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ico.gif -------------------------------------------------------------------------------- /www/img/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/logo.gif -------------------------------------------------------------------------------- /app/views/left.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/left.tpl -------------------------------------------------------------------------------- /lib/inc/font/0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/0.ttf -------------------------------------------------------------------------------- /lib/inc/font/1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/1.ttf -------------------------------------------------------------------------------- /lib/inc/font/10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/10.ttf -------------------------------------------------------------------------------- /lib/inc/font/2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/2.ttf -------------------------------------------------------------------------------- /lib/inc/font/3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/3.ttf -------------------------------------------------------------------------------- /lib/inc/font/4.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/4.ttf -------------------------------------------------------------------------------- /lib/inc/font/5.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/5.ttf -------------------------------------------------------------------------------- /lib/inc/font/6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/6.ttf -------------------------------------------------------------------------------- /lib/inc/font/7.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/7.ttf -------------------------------------------------------------------------------- /lib/inc/font/8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/8.ttf -------------------------------------------------------------------------------- /lib/inc/font/9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/font/9.ttf -------------------------------------------------------------------------------- /lib/model/board.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/board.php -------------------------------------------------------------------------------- /lib/model/favor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/favor.php -------------------------------------------------------------------------------- /lib/model/mail.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/mail.php -------------------------------------------------------------------------------- /lib/model/refer.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/refer.php -------------------------------------------------------------------------------- /lib/model/user.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/user.php -------------------------------------------------------------------------------- /lib/widget/vote.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/widget/vote.php -------------------------------------------------------------------------------- /www/css/common.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/css/common.css -------------------------------------------------------------------------------- /www/img/ubb/img.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/img.gif -------------------------------------------------------------------------------- /www/img/ubb/map.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/map.gif -------------------------------------------------------------------------------- /www/img/ubb/url.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/url.gif -------------------------------------------------------------------------------- /www/js/forum.adv.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.adv.js -------------------------------------------------------------------------------- /www/js/forum.fav.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.fav.js -------------------------------------------------------------------------------- /www/js/forum.lib.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.lib.js -------------------------------------------------------------------------------- /www/js/forum.reg.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.reg.js -------------------------------------------------------------------------------- /app/shells/weather.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/shells/weather.php -------------------------------------------------------------------------------- /app/views/footer.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/footer.tpl -------------------------------------------------------------------------------- /app/views/header.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/header.tpl -------------------------------------------------------------------------------- /app/views/reg/form.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/reg/form.tpl -------------------------------------------------------------------------------- /lib/inc/pagination.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/inc/pagination.php -------------------------------------------------------------------------------- /lib/model/archive.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/archive.php -------------------------------------------------------------------------------- /lib/model/friend.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/friend.php -------------------------------------------------------------------------------- /lib/model/iwidget.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/iwidget.php -------------------------------------------------------------------------------- /lib/model/section.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/model/section.php -------------------------------------------------------------------------------- /lib/widget/classic.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/widget/classic.php -------------------------------------------------------------------------------- /lib/widget/topten.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/widget/topten.php -------------------------------------------------------------------------------- /lib/widget/weather.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/lib/widget/weather.php -------------------------------------------------------------------------------- /www/img/app/hover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/hover.gif -------------------------------------------------------------------------------- /www/img/ubb/bold.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/bold.gif -------------------------------------------------------------------------------- /www/img/ubb/center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/center.gif -------------------------------------------------------------------------------- /www/img/ubb/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/code.gif -------------------------------------------------------------------------------- /www/img/ubb/em/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/1.gif -------------------------------------------------------------------------------- /www/img/ubb/em/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/10.gif -------------------------------------------------------------------------------- /www/img/ubb/em/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/11.gif -------------------------------------------------------------------------------- /www/img/ubb/em/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/12.gif -------------------------------------------------------------------------------- /www/img/ubb/em/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/13.gif -------------------------------------------------------------------------------- /www/img/ubb/em/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/14.gif -------------------------------------------------------------------------------- /www/img/ubb/em/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/15.gif -------------------------------------------------------------------------------- /www/img/ubb/em/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/16.gif -------------------------------------------------------------------------------- /www/img/ubb/em/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/17.gif -------------------------------------------------------------------------------- /www/img/ubb/em/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/18.gif -------------------------------------------------------------------------------- /www/img/ubb/em/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/19.gif -------------------------------------------------------------------------------- /www/img/ubb/em/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/2.gif -------------------------------------------------------------------------------- /www/img/ubb/em/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/20.gif -------------------------------------------------------------------------------- /www/img/ubb/em/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/21.gif -------------------------------------------------------------------------------- /www/img/ubb/em/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/22.gif -------------------------------------------------------------------------------- /www/img/ubb/em/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/23.gif -------------------------------------------------------------------------------- /www/img/ubb/em/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/24.gif -------------------------------------------------------------------------------- /www/img/ubb/em/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/25.gif -------------------------------------------------------------------------------- /www/img/ubb/em/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/26.gif -------------------------------------------------------------------------------- /www/img/ubb/em/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/27.gif -------------------------------------------------------------------------------- /www/img/ubb/em/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/28.gif -------------------------------------------------------------------------------- /www/img/ubb/em/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/29.gif -------------------------------------------------------------------------------- /www/img/ubb/em/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/3.gif -------------------------------------------------------------------------------- /www/img/ubb/em/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/30.gif -------------------------------------------------------------------------------- /www/img/ubb/em/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/31.gif -------------------------------------------------------------------------------- /www/img/ubb/em/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/32.gif -------------------------------------------------------------------------------- /www/img/ubb/em/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/33.gif -------------------------------------------------------------------------------- /www/img/ubb/em/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/34.gif -------------------------------------------------------------------------------- /www/img/ubb/em/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/35.gif -------------------------------------------------------------------------------- /www/img/ubb/em/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/36.gif -------------------------------------------------------------------------------- /www/img/ubb/em/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/37.gif -------------------------------------------------------------------------------- /www/img/ubb/em/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/38.gif -------------------------------------------------------------------------------- /www/img/ubb/em/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/39.gif -------------------------------------------------------------------------------- /www/img/ubb/em/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/4.gif -------------------------------------------------------------------------------- /www/img/ubb/em/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/40.gif -------------------------------------------------------------------------------- /www/img/ubb/em/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/41.gif -------------------------------------------------------------------------------- /www/img/ubb/em/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/42.gif -------------------------------------------------------------------------------- /www/img/ubb/em/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/43.gif -------------------------------------------------------------------------------- /www/img/ubb/em/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/44.gif -------------------------------------------------------------------------------- /www/img/ubb/em/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/45.gif -------------------------------------------------------------------------------- /www/img/ubb/em/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/46.gif -------------------------------------------------------------------------------- /www/img/ubb/em/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/47.gif -------------------------------------------------------------------------------- /www/img/ubb/em/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/48.gif -------------------------------------------------------------------------------- /www/img/ubb/em/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/49.gif -------------------------------------------------------------------------------- /www/img/ubb/em/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/5.gif -------------------------------------------------------------------------------- /www/img/ubb/em/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/50.gif -------------------------------------------------------------------------------- /www/img/ubb/em/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/51.gif -------------------------------------------------------------------------------- /www/img/ubb/em/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/52.gif -------------------------------------------------------------------------------- /www/img/ubb/em/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/53.gif -------------------------------------------------------------------------------- /www/img/ubb/em/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/54.gif -------------------------------------------------------------------------------- /www/img/ubb/em/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/55.gif -------------------------------------------------------------------------------- /www/img/ubb/em/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/56.gif -------------------------------------------------------------------------------- /www/img/ubb/em/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/57.gif -------------------------------------------------------------------------------- /www/img/ubb/em/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/58.gif -------------------------------------------------------------------------------- /www/img/ubb/em/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/59.gif -------------------------------------------------------------------------------- /www/img/ubb/em/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/6.gif -------------------------------------------------------------------------------- /www/img/ubb/em/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/60.gif -------------------------------------------------------------------------------- /www/img/ubb/em/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/61.gif -------------------------------------------------------------------------------- /www/img/ubb/em/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/62.gif -------------------------------------------------------------------------------- /www/img/ubb/em/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/63.gif -------------------------------------------------------------------------------- /www/img/ubb/em/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/64.gif -------------------------------------------------------------------------------- /www/img/ubb/em/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/65.gif -------------------------------------------------------------------------------- /www/img/ubb/em/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/66.gif -------------------------------------------------------------------------------- /www/img/ubb/em/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/67.gif -------------------------------------------------------------------------------- /www/img/ubb/em/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/68.gif -------------------------------------------------------------------------------- /www/img/ubb/em/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/69.gif -------------------------------------------------------------------------------- /www/img/ubb/em/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/7.gif -------------------------------------------------------------------------------- /www/img/ubb/em/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/70.gif -------------------------------------------------------------------------------- /www/img/ubb/em/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/71.gif -------------------------------------------------------------------------------- /www/img/ubb/em/72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/72.gif -------------------------------------------------------------------------------- /www/img/ubb/em/73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/73.gif -------------------------------------------------------------------------------- /www/img/ubb/em/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/8.gif -------------------------------------------------------------------------------- /www/img/ubb/em/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/em/9.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/0.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/1.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/10.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/11.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/12.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/13.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/14.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/15.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/16.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/17.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/18.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/19.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/2.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/20.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/21.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/22.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/23.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/24.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/25.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/26.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/27.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/28.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/29.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/3.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/30.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/31.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/32.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/33.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/34.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/35.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/36.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/37.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/38.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/39.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/4.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/40.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/41.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/5.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/6.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/7.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/8.gif -------------------------------------------------------------------------------- /www/img/ubb/ema/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/ema/9.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/0.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/1.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/10.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/11.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/12.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/13.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/14.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/15.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/16.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/17.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/18.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/19.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/2.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/20.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/21.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/22.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/23.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/24.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/3.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/4.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/5.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/6.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/7.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/8.gif -------------------------------------------------------------------------------- /www/img/ubb/emb/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emb/9.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/0.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/1.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/10.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/11.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/12.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/13.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/14.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/15.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/16.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/17.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/18.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/19.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/2.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/20.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/21.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/22.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/23.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/24.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/25.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/26.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/27.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/28.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/29.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/3.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/30.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/31.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/32.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/33.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/34.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/35.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/36.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/37.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/38.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/39.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/4.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/40.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/41.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/42.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/43.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/44.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/45.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/46.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/47.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/48.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/49.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/5.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/50.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/51.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/52.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/53.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/54.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/55.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/56.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/57.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/58.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/6.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/7.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/8.gif -------------------------------------------------------------------------------- /www/img/ubb/emc/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/emc/9.gif -------------------------------------------------------------------------------- /www/img/ubb/face.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/face.gif -------------------------------------------------------------------------------- /www/img/ubb/flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/flash.gif -------------------------------------------------------------------------------- /www/img/ubb/italic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/italic.gif -------------------------------------------------------------------------------- /www/img/ubb/left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/left.gif -------------------------------------------------------------------------------- /www/img/ubb/mail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/mail.gif -------------------------------------------------------------------------------- /www/img/ubb/media.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/media.gif -------------------------------------------------------------------------------- /www/img/ubb/music.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/music.gif -------------------------------------------------------------------------------- /www/img/ubb/quote.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/quote.gif -------------------------------------------------------------------------------- /www/img/ubb/real.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/real.gif -------------------------------------------------------------------------------- /www/img/ubb/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/right.gif -------------------------------------------------------------------------------- /www/img/vote/clock.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/clock.gif -------------------------------------------------------------------------------- /www/img/vote/user.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/user.gif -------------------------------------------------------------------------------- /www/img/vote/vote.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/vote.gif -------------------------------------------------------------------------------- /www/js/forum.board.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.board.js -------------------------------------------------------------------------------- /www/js/forum.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.config.js -------------------------------------------------------------------------------- /www/js/forum.friend.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.friend.js -------------------------------------------------------------------------------- /www/js/forum.mail.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.mail.js -------------------------------------------------------------------------------- /www/js/forum.manage.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.manage.js -------------------------------------------------------------------------------- /www/js/forum.refer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.refer.js -------------------------------------------------------------------------------- /www/js/forum.search.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.search.js -------------------------------------------------------------------------------- /www/js/forum.share.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.share.js -------------------------------------------------------------------------------- /www/js/forum.upload.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.upload.js -------------------------------------------------------------------------------- /www/js/forum.widget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.widget.js -------------------------------------------------------------------------------- /www/js/forum.xubb.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.xubb.js -------------------------------------------------------------------------------- /app/controllers/Mail.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Mail.php -------------------------------------------------------------------------------- /app/controllers/Reg.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Reg.php -------------------------------------------------------------------------------- /app/controllers/Rss.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Rss.php -------------------------------------------------------------------------------- /app/controllers/User.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/User.php -------------------------------------------------------------------------------- /app/views/adv/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/adv/index.tpl -------------------------------------------------------------------------------- /app/views/board/mode.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/board/mode.tpl -------------------------------------------------------------------------------- /app/views/board/vote.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/board/vote.tpl -------------------------------------------------------------------------------- /app/views/elite/file.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/elite/file.tpl -------------------------------------------------------------------------------- /app/views/elite/path.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/elite/path.tpl -------------------------------------------------------------------------------- /app/views/forum/pre.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/forum/pre.tpl -------------------------------------------------------------------------------- /app/views/mail/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/mail/index.tpl -------------------------------------------------------------------------------- /app/views/mail/send.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/mail/send.tpl -------------------------------------------------------------------------------- /app/views/pagination.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/pagination.tpl -------------------------------------------------------------------------------- /app/views/reg/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/reg/index.tpl -------------------------------------------------------------------------------- /app/views/user/info.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/user/info.tpl -------------------------------------------------------------------------------- /app/views/user/query.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/user/query.tpl -------------------------------------------------------------------------------- /app/views/widget/add.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/widget/add.tpl -------------------------------------------------------------------------------- /conf/nforum.example.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/conf/nforum.example.php -------------------------------------------------------------------------------- /www/files/audio/mail.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/files/audio/mail.wav -------------------------------------------------------------------------------- /www/img/logo_footer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/logo_footer.gif -------------------------------------------------------------------------------- /www/js/forum.article.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.article.js -------------------------------------------------------------------------------- /www/js/forum.control.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.control.js -------------------------------------------------------------------------------- /www/js/forum.keyboard.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/js/forum.keyboard.js -------------------------------------------------------------------------------- /app/controllers/Article.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Article.php -------------------------------------------------------------------------------- /app/controllers/Board.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Board.php -------------------------------------------------------------------------------- /app/controllers/Elite.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Elite.php -------------------------------------------------------------------------------- /app/controllers/Favor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Favor.php -------------------------------------------------------------------------------- /app/controllers/Forum.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Forum.php -------------------------------------------------------------------------------- /app/controllers/Friend.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Friend.php -------------------------------------------------------------------------------- /app/controllers/Refer.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Refer.php -------------------------------------------------------------------------------- /app/controllers/Search.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Search.php -------------------------------------------------------------------------------- /app/controllers/Section.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Section.php -------------------------------------------------------------------------------- /app/controllers/Widget.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Widget.php -------------------------------------------------------------------------------- /app/views/article/cross.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/cross.tpl -------------------------------------------------------------------------------- /app/views/article/edit.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/edit.tpl -------------------------------------------------------------------------------- /app/views/article/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/index.tpl -------------------------------------------------------------------------------- /app/views/article/post.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/post.tpl -------------------------------------------------------------------------------- /app/views/article/tmpl.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/tmpl.tpl -------------------------------------------------------------------------------- /app/views/board/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/board/index.tpl -------------------------------------------------------------------------------- /app/views/error/error.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/error/error.tpl -------------------------------------------------------------------------------- /app/views/favor/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/favor/index.tpl -------------------------------------------------------------------------------- /app/views/forum/flink.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/forum/flink.tpl -------------------------------------------------------------------------------- /app/views/forum/front.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/forum/front.tpl -------------------------------------------------------------------------------- /app/views/forum/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/forum/index.tpl -------------------------------------------------------------------------------- /app/views/forum/online.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/forum/online.tpl -------------------------------------------------------------------------------- /app/views/friend/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/friend/index.tpl -------------------------------------------------------------------------------- /app/views/friend/online.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/friend/online.tpl -------------------------------------------------------------------------------- /app/views/refer/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/refer/index.tpl -------------------------------------------------------------------------------- /app/views/search/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/search/index.tpl -------------------------------------------------------------------------------- /app/views/section/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/section/index.tpl -------------------------------------------------------------------------------- /app/views/user/custom.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/user/custom.tpl -------------------------------------------------------------------------------- /app/views/user/passwd.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/user/passwd.tpl -------------------------------------------------------------------------------- /www/files/swf/Jplayer.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/files/swf/Jplayer.swf -------------------------------------------------------------------------------- /www/img/app/weather/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/1.png -------------------------------------------------------------------------------- /www/img/app/weather/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/2.png -------------------------------------------------------------------------------- /www/img/app/weather/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/3.png -------------------------------------------------------------------------------- /www/img/app/weather/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/4.png -------------------------------------------------------------------------------- /www/img/app/weather/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/5.png -------------------------------------------------------------------------------- /www/img/app/weather/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/6.png -------------------------------------------------------------------------------- /www/img/app/weather/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/7.png -------------------------------------------------------------------------------- /www/img/app/weather/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/weather/8.png -------------------------------------------------------------------------------- /www/img/face_default_f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/face_default_f.jpg -------------------------------------------------------------------------------- /www/img/face_default_m.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/face_default_m.jpg -------------------------------------------------------------------------------- /www/img/ubb/quicktime.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/quicktime.gif -------------------------------------------------------------------------------- /www/img/ubb/underline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ubb/underline.gif -------------------------------------------------------------------------------- /www/img/vote/chart_bar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/chart_bar.gif -------------------------------------------------------------------------------- /www/img/vote/chart_pie.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/chart_pie.gif -------------------------------------------------------------------------------- /www/img/vote/vote_num.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/vote_num.gif -------------------------------------------------------------------------------- /app/controllers/Blacklist.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Blacklist.php -------------------------------------------------------------------------------- /app/views/article/forward.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/forward.tpl -------------------------------------------------------------------------------- /app/views/article/manage.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/manage.tpl -------------------------------------------------------------------------------- /app/views/article/preview.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/preview.tpl -------------------------------------------------------------------------------- /app/views/article/single.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/single.tpl -------------------------------------------------------------------------------- /app/views/attachment/edit.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/attachment/edit.tpl -------------------------------------------------------------------------------- /app/views/blacklist/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/blacklist/index.tpl -------------------------------------------------------------------------------- /app/views/board/denylist.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/board/denylist.tpl -------------------------------------------------------------------------------- /app/views/board/vote_que.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/board/vote_que.tpl -------------------------------------------------------------------------------- /app/views/error/error404.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/error/error404.tpl -------------------------------------------------------------------------------- /app/views/search/article.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/search/article.tpl -------------------------------------------------------------------------------- /www/img/app/icon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/app/icon/default.png -------------------------------------------------------------------------------- /www/img/vote/color_swatch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/vote/color_swatch.gif -------------------------------------------------------------------------------- /app/controllers/Attachment.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/controllers/Attachment.php -------------------------------------------------------------------------------- /app/views/article/tmpl_que.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/article/tmpl_que.tpl -------------------------------------------------------------------------------- /app/views/attachment/upload.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/attachment/upload.tpl -------------------------------------------------------------------------------- /www/files/swf/plupload.flash.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/files/swf/plupload.flash.swf -------------------------------------------------------------------------------- /app/views/syntax_high_lighter.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/views/syntax_high_lighter.tpl -------------------------------------------------------------------------------- /app/modules/Api/controllers/Vote.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Api/controllers/Vote.php -------------------------------------------------------------------------------- /app/modules/Mobile/lib/controller.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/lib/controller.php -------------------------------------------------------------------------------- /app/modules/Mobile/views/footer.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/footer.tpl -------------------------------------------------------------------------------- /app/modules/Vote/views/index/add.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Vote/views/index/add.tpl -------------------------------------------------------------------------------- /app/modules/Vote/views/index/view.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Vote/views/index/view.tpl -------------------------------------------------------------------------------- /app/modules/Vote/views/index/vote.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Vote/views/index/vote.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Mail.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Mail.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/User.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/User.php -------------------------------------------------------------------------------- /app/modules/Mobile/views/index/hot.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/index/hot.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/mail/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/mail/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/mail/send.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/mail/send.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/mail/show.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/mail/show.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/user/query.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/user/query.tpl -------------------------------------------------------------------------------- /app/modules/Vote/controllers/Index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Vote/controllers/Index.php -------------------------------------------------------------------------------- /app/modules/Vote/views/index/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Vote/views/index/index.tpl -------------------------------------------------------------------------------- /www/img/ui/ui-icons_217bc0_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_217bc0_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_2e83ff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_2e83ff_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_469bdd_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_469bdd_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_6da8d5_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_6da8d5_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_cd0a0a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_cd0a0a_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_d8e7f3_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_d8e7f3_256x240.png -------------------------------------------------------------------------------- /www/img/ui/ui-icons_f9bd01_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-icons_f9bd01_256x240.png -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Article.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Article.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Board.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Board.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Error.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Error.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Favor.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Favor.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Friend.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Friend.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Index.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Index.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Refer.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Refer.php -------------------------------------------------------------------------------- /app/modules/Mobile/controllers/Section.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/controllers/Section.php -------------------------------------------------------------------------------- /app/modules/Mobile/views/article/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/article/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/article/post.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/article/post.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/board/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/board/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/error/error.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/error/error.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/favor/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/favor/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/friend/online.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/friend/online.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/index/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/index/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/mail/forward.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/mail/forward.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/refer/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/refer/index.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/section/index.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/section/index.tpl -------------------------------------------------------------------------------- /www/img/ui/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_flat_55_fbec88_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_flat_55_fbec88_40x100.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_glass_75_d0e5f5_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_glass_75_d0e5f5_1x400.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_glass_85_dfeffc_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_glass_85_dfeffc_1x400.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_glass_95_fef1ec_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_glass_95_fef1ec_1x400.png -------------------------------------------------------------------------------- /app/modules/Mobile/views/article/forward.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/article/forward.tpl -------------------------------------------------------------------------------- /app/modules/Mobile/views/article/single.tpl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/app/modules/Mobile/views/article/single.tpl -------------------------------------------------------------------------------- /www/img/ui/ui-bg_gloss-wave_55_5c9ccc_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_gloss-wave_55_5c9ccc_500x100.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_inset-hard_100_f5f8f9_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_inset-hard_100_f5f8f9_1x100.png -------------------------------------------------------------------------------- /www/img/ui/ui-bg_inset-hard_100_fcfdfd_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/ui/ui-bg_inset-hard_100_fcfdfd_1x100.png -------------------------------------------------------------------------------- /bin/cli: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ROOT=$(dirname $(cd "$(dirname "$0")"; pwd)) 3 | clear 4 | 5 | php -q ${ROOT}/lib/inc/cli.php "${ROOT}" "$@" 6 | 7 | exit; 8 | -------------------------------------------------------------------------------- /www/img/jplayer.blue.monday/jplayer.blue.monday.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/jplayer.blue.monday/jplayer.blue.monday.jpg -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | RewriteRule ^$ www/ [L] 5 | RewriteRule ^(.*)$ www/$1 [L] 6 | 7 | -------------------------------------------------------------------------------- /www/img/ubb/mv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | num=1 3 | for file in `ls |sort -n|grep -i gif` 4 | do 5 | mv $file $num.gif 6 | num=`expr $num + 1` 7 | done 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | www/files/imgupload/* 3 | www/uploadFace/* 4 | www/img/app/icon/* 5 | www/js/pack* 6 | www/css/pack* 7 | conf/nforum.php 8 | app/tmp/* 9 | -------------------------------------------------------------------------------- /www/img/jplayer.blue.monday/jplayer.blue.monday.seeking.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xw2423/nForum/HEAD/www/img/jplayer.blue.monday/jplayer.blue.monday.seeking.gif -------------------------------------------------------------------------------- /app/views/s_nav.tpl: -------------------------------------------------------------------------------- 1 |
2 | <{if isset($nav_right)}> 3 | <{$nav_right}> 4 | <{/if}> 5 | <{$nav_left}> 6 |
7 | 8 | -------------------------------------------------------------------------------- /www/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | RewriteEngine On 3 | 4 | RewriteCond %{REQUEST_FILENAME} !-d 5 | RewriteCond %{REQUEST_FILENAME} !-f 6 | RewriteRule .* index.php 7 | 8 | -------------------------------------------------------------------------------- /app/modules/Vote/route.php: -------------------------------------------------------------------------------- 1 | 'vote', 'controller' => 'index', 'action' => null, 'vid' => null), array('vid' => '[\d]+')); 4 | -------------------------------------------------------------------------------- /www/crossdomain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/views/css.tpl: -------------------------------------------------------------------------------- 1 | 2 | <{if !empty($css)}> 3 | <{foreach from=$css item=item}> 4 | 5 | <{/foreach}> 6 | <{/if}> 7 | <{if !empty($css_out)}> 8 | 11 | <{/if}> 12 | -------------------------------------------------------------------------------- /app/modules/Api/shells/sessionclean.php: -------------------------------------------------------------------------------- 1 | delete('pl_api_session', 'where expire 2 | <{if !empty($jsr)}> 3 | 8 | <{/if}> 9 | <{if !empty($js)}> 10 | <{foreach from=$js item=item}> 11 | 12 | <{/foreach}> 13 | <{/if}> 14 | <{if !empty($js_out)}> 15 | 18 | <{/if}> 19 | -------------------------------------------------------------------------------- /www/css/preindex.css: -------------------------------------------------------------------------------- 1 | #wrap{ text-align:center; } 2 | #preImg{margin:40px auto 0;width:640px;height:400px} 3 | #preImg img{ border:2px solid #000; } 4 | #login{ margin-top:10px; } 5 | select,input{margin-right:5px;} 6 | select{height:22px;vertical-align:bottom} 7 | #login .input-text{height:14px;margin-left:2px;margin-right:4px;} 8 | #id{width:120px} 9 | #pwd{font-size: 12px;width:120px} 10 | .radio{ } 11 | #b_adv ul{margin-top:14px;} 12 | #b_adv li{display:inline;margin:0 7px;} 13 | -------------------------------------------------------------------------------- /www/css/error.css: -------------------------------------------------------------------------------- 1 | .b-head{text-align:center;} 2 | .b-head span{ font-size:14px;} 3 | .b-content{ 4 | padding:30px; 5 | } 6 | .error{border-bottom:1px solid #CCC;} 7 | .error h5{font-size:14px;} 8 | .error div{margin-top:10px;} 9 | .error ul{padding:12px 30px 28px;} 10 | .error li{padding:5px 0 5px 20px} 11 | .error li samp { 12 | height:14px; 13 | margin-right:6px; 14 | width:8px; 15 | } 16 | .error-op{text-align:center;padding-top:20px;} 17 | .error-su{width:100px;padding:4px 0;*padding:4px 0 1px} 18 | -------------------------------------------------------------------------------- /www/css/favor.css: -------------------------------------------------------------------------------- 1 | .b-content .middle{ text-align:center;} 2 | .title_1{ width:140px; padding-left:10px;} 3 | .title_2{ width:100px;} 4 | .title_3{ width:auto;} 5 | .title_4{ width:60px;} 6 | .title_5{ width:60px;} 7 | .title_6{ width:60px;} 8 | .title_7{ width:60px;} 9 | .title_8{ width:35px;} 10 | #fav_op, #fav_add { float:left; margin-left:4px; margin-bottom:6px; } 11 | #fav_add input, #fav_op input{ font-weight:normal;margin-right:4px;} 12 | #fav_add{margin-left:24px} 13 | #fav_add .button{margin-left:4px} 14 | #fav_add .input-text{width:100px} 15 | -------------------------------------------------------------------------------- /app/shells/example.php: -------------------------------------------------------------------------------- 1 | _initKbs init kbs 19 | $this->_initKbs(); 20 | 21 | //call kbs function 22 | dump(bbs_getwwwguestnumber()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/modules/Api/lib/basic_auth.php: -------------------------------------------------------------------------------- 1 | _info)) 15 | $val = $this->_info["$name"]; 16 | return $val; 17 | } 18 | 19 | public function __set($name, $val){} 20 | 21 | public function __isset($name){ 22 | return array_key_exists($name, $this->_info); 23 | } 24 | 25 | public function __unset($name){} 26 | 27 | } 28 | -------------------------------------------------------------------------------- /app/plugins/Module.php: -------------------------------------------------------------------------------- 1 | getModuleName())){ 10 | //if use domain, Index can't visit 11 | $d = c('modules.' . strtolower($m) . '.domain'); 12 | if(!empty($d) && c('site.domain') != 'http://' . $d) 13 | nforum_error404(true); 14 | 15 | load(MODULE . DS . $request->getModuleName() . DS . 'lib' . DS . 'controller.php'); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /conf/ipacl.php: -------------------------------------------------------------------------------- 1 | _vars['no_html_data'])) 14 | nforum_error404(true); 15 | $this->_initHeader(); 16 | load('inc/json'); 17 | return NF_Json::encode(array_merge($this->_vars['no_html_data'], $tpl_vars)); 18 | } 19 | 20 | protected function _initHeader(){ 21 | parent::_initHeader(); 22 | header('Content-Type:application/json;charset=' . c('application.encoding')); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /www/css/register.css: -------------------------------------------------------------------------------- 1 | #c_content{border:1px solid #598edd;margin-top:5px;} 2 | #r_table{ width:100%; margin-top:1px;} 3 | #r_table tr:hover td{background-color: #f5f8fb;} 4 | #r_table td{ vertical-align:middle; padding-top:10px; padding-bottom:3px; border-bottom:1px solid #c9d7f1;} 5 | #r_table span{ display:block; font-size:14px; font-weight:bold; color:#666; padding-bottom:3px;} 6 | #r_table input{font-size:18px; margin-right:10px} 7 | #r_table samp{height:26px;width:15px;margin-right:4px;} 8 | #r_table .button{font-size:12px;} 9 | .r_cell_1{ width:350px; padding-left:40px;} 10 | .r_su{ display:block;margin:15px;} 11 | .r_submit{ margin-left:140px; margin-right:-130px;} 12 | #t_auth, #authimg{float:left;} 13 | #t_auth{margin-top:6px;} 14 | -------------------------------------------------------------------------------- /app/shells/install.php: -------------------------------------------------------------------------------- 1 | _num = Forum::getOnlineUserNum(); 9 | } 10 | 11 | public function getTotalNum(){ 12 | return $this->_num; 13 | } 14 | 15 | public function getRecord($start, $num){ 16 | $users = array(); 17 | $ret = bbs_getonline_user_list($start, $num); 18 | if($ret == 0) 19 | return array(); 20 | foreach($ret as $v){ 21 | $info = array(); 22 | if(bbs_getuser($v['userid'], $info) == 0){ 23 | throw new UserNullException(); 24 | } 25 | $users[] = new User($info, $v); 26 | } 27 | return $users; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /www/css/ubb.css: -------------------------------------------------------------------------------- 1 | #ubb_wrap .ubb-icon{margin-top:3px} 2 | .ubb-img-tab{padding:3px;height:auto;overflow:hidden;width:97%} 3 | .ubb-img-tab li{float:left;margin:0;margin-left:1px;width:70px;line-height:20px;text-align:center;border:1px solid #598EDD;cursor:pointer;padding:1px} 4 | .ubb-img-tab li div{font-weight:bold;color:#598EDE;font-size:14px;width:100%;height:100%;} 5 | .ubb-img-tab .selected{background-color:#598EDE;color:#FFF} 6 | .ubb-img{margin:3px;padding:3px;border:1px solid #598EDD;width:98%;height:auto;overflow:hidden;clear:both;display:none} 7 | .ubb-img img{float:left;margin:2px;cursor:pointer;} 8 | #map_area{ 9 | width:80%; 10 | display:none; 11 | font-size:14px; 12 | } 13 | #map_canvas{ 14 | height:400px; 15 | } 16 | #map_func{ 17 | padding-top:10px; 18 | } 19 | #map_insert{ 20 | margin-top:5px; 21 | } 22 | .map-map{ 23 | width:600px; 24 | height:400px; 25 | } 26 | -------------------------------------------------------------------------------- /www/js/forum.elite.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | var tmpl_preview = _.template($('#tmpl_preview').html()),f; 3 | $('#body').on('click', '.elite-preview', function(){ 4 | $.getJSON($(this).attr('href').replace("/elite/file", "/elite/ajax_file.json"), function(repo){ 5 | if(repo.ajax_st == 0) 6 | DIALOG.ajaxDialog(repo); 7 | else{ 8 | DIALOG.formDialog(tmpl_preview(repo), 9 | {title:SYS.code.COM_DETAIL, width:600 10 | }); 11 | if(typeof sh_init !== 'undefined') sh_init(); 12 | } 13 | }); 14 | return false; 15 | }); 16 | if(f = window.BODY.get('path').match(/&f=([^&]*)/)){ 17 | f = encodeURIComponent(f[1]); 18 | $('#body a[href$="' + f + '"]').click(); 19 | window.ROUTER.navigate(window.BODY.get('path').replace(/&f=([^&]*)/, '')); 20 | } 21 | }); 22 | -------------------------------------------------------------------------------- /www/css/search.css: -------------------------------------------------------------------------------- 1 | .search{ 2 | color:#3e6195; 3 | font-size:14px; 4 | font-weight:bold; 5 | width:100%; 6 | } 7 | .search ul{padding-left:30px;padding-bottom:20px;border-bottom:1px solid #c9d7f1} 8 | .search ul li{ 9 | height:24px; 10 | margin-top:10px; 11 | } 12 | .search span{ 13 | display:inline-block; 14 | padding-top:5px; 15 | } 16 | .search .input{ 17 | width:150px; 18 | margin:0 5px; 19 | } 20 | .search select{height:22px; margin-top:2px; margin:0 5px;} 21 | .search .input-day{ width:60px;} 22 | .search .input-check{height:20px;margin-right:3px;vertical-align:top} 23 | .search .search-option{ 24 | margin-top:14px; 25 | } 26 | .search .search-option input{ 27 | vertical-align:middle; 28 | } 29 | .search .search-option span{ 30 | display:inline-block; 31 | padding-top:0; 32 | margin-right:6px; 33 | } 34 | .search .b-search{ 35 | padding:15px 0 5px 80px; 36 | } 37 | -------------------------------------------------------------------------------- /app/modules/Api/controllers/User.php: -------------------------------------------------------------------------------- 1 | params['id']); 6 | try{ 7 | $u = User::getInstance($id); 8 | }catch(UserNullException $e){ 9 | $this->error(ECode::$USER_NOID); 10 | } 11 | $wrapper = Wrapper::getInstance(); 12 | $this->set('data', $wrapper->user($u)); 13 | } 14 | 15 | public function loginAction(){ 16 | $u = User::getInstance(); 17 | $wrapper = Wrapper::getInstance(); 18 | $data = $wrapper->user($u); 19 | $this->set('data', $data); 20 | } 21 | 22 | public function logoutAction(){ 23 | $u = User::getInstance(); 24 | $wrapper = Wrapper::getInstance(); 25 | $this->set('data', $wrapper->user($u)); 26 | NF_ApiSession::getInstance()->logout(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/controllers/Error.php: -------------------------------------------------------------------------------- 1 | set('no_html_data', array( 7 | 'ajax_st' => 0 8 | ,'ajax_code' => $exception->getMessage() 9 | ,'ajax_msg' => ECode::msg($exception->getMessage()) 10 | )); 11 | $this->render('error'); 12 | }else if(is_a($exception, 'NF_ERROR404Exception') 13 | || is_a($exception, 'Yaf_Exception') 14 | || !is_a($exception, 'Exception')){ 15 | header('HTTP/1.1 404 Not Found'); 16 | $this->set('siteName', c('site.name')); 17 | $this->render('error404'); 18 | }else{ 19 | exit('sys exception: "' . $exception->getMessage() . '" in ' . $exception->getFile()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/modules/Mobile/views/header.tpl: -------------------------------------------------------------------------------- 1 | "?> 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | <{$webTitle}> 12 | <{include file="$view/css.tpl"}> 13 | 14 | 15 |
16 | 17 | 20 |
21 | <{if !empty($msg)}> 22 |
<{$msg}>
23 | <{/if}> 24 | 25 | -------------------------------------------------------------------------------- /www/index.php: -------------------------------------------------------------------------------- 1 | $app)); 27 | $app->bootstrap()->run(); 28 | ?> 29 | -------------------------------------------------------------------------------- /lib/inc/views/xml.php: -------------------------------------------------------------------------------- 1 | _vars['no_html_data'|'root'] 14 | * 15 | * @return string 16 | * @access public 17 | */ 18 | public function render($tpl, $tpl_vars = array()){ 19 | if(!isset($this->_vars['no_html_data'])) 20 | nforum_error404(true); 21 | if(isset($this->_vars['root']) && !empty($this->_vars['root'])) 22 | $root = $this->_vars['root']; 23 | else 24 | $root = strtolower($this->_request->getControllerName()); 25 | 26 | $this->_initHeader(); 27 | load('inc/xml'); 28 | return NF_Xml::encode($this->_vars['no_html_data'], $root); 29 | } 30 | 31 | protected function _initHeader(){ 32 | parent::_initHeader(); 33 | header('Content-Type:application/xml;charset=' . c('application.encoding')); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /conf/uaacl.php: -------------------------------------------------------------------------------- 1 | getMessage(); 9 | $code = is_null($code)?ECode::$SYS_ERROR:$code; 10 | $msg = ECode::msg($code); 11 | }else if(is_a($exception, 'NF_ERROR404Exception') 12 | || is_a($exception, 'Yaf_Exception') 13 | || !is_a($exception, 'Exception')){ 14 | $code = ECode::$SYS_404; 15 | $msg = ECode::msg($code); 16 | }else{ 17 | $code = ECode::$SYS_ERROR; 18 | $msg = 'sys exception: "' . $exception->getMessage() . '" in ' . $exception->getFile(); 19 | } 20 | $req = str_replace($this->_abase, '', $this->getRequest()->url . '.' . $this->getRequest()->ext); 21 | $_error = array('request' => $req, 'code'=> $code, 'msg' => $msg); 22 | $this->set('data', $_error); 23 | $this->name = 'error'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /www/js/forum.pre.js: -------------------------------------------------------------------------------- 1 | var login = [SYS.base + '/' + SYS.ajax.login], 2 | home = [SYS.base + '/#!' + SYS.home.substr(1)]; 3 | $(function(){ 4 | $('#f_login').submit(function(){ 5 | $.cookie('login-user', $('#id').val(),{path:'/', domain:SYS.cookie_domain,expires:30}); 6 | var v = $('#s-mode').val(); 7 | if(v == '0'){ 8 | $.post(login[v], $(this).getPostData(), function(json){ 9 | if(json.ajax_st == 1) 10 | window.location.href = SYS.base + '/'; 11 | else{ 12 | $('#pwd').val(''); 13 | DIALOG.ajaxDialog(json); 14 | } 15 | }, 'json'); 16 | return false; 17 | } 18 | $(this).attr('action', login[v]); 19 | }); 20 | $('#b_guest').click(function(){ 21 | window.location.href = home[$('#s-mode').val()] 22 | }); 23 | $('#b_reg').click(function(){ 24 | window.location.href = SYS.base + "/#!reg"; 25 | }); 26 | $('#id, #pwd').placeholder().filter('#id').val($.cookie('login-user')); 27 | $($('#id').val() == ''?'#id':'#pwd').focus(); 28 | }); 29 | -------------------------------------------------------------------------------- /www/css/article.css: -------------------------------------------------------------------------------- 1 | .t-btn a{ 2 | display:inline-block; 3 | text-align:center; 4 | font-size:14px; 5 | margin-right:4px; 6 | padding:2px 6px; 7 | padding:3px 6px 1px\9; 8 | } 9 | .t-btn a:hover{color:#FFF} 10 | .t-btn .input{font-size:12px;margin-right:5px} 11 | .t-btn .rss{padding:0;vertical-align:bottom} 12 | .t-btn label{margin-right:5px; margin-left:2px;vertical-align:middle} 13 | .page{float:right;padding-top:2px;*padding-top:0} 14 | .t-pre, .t-pre-bottom { 15 | margin-top:2px; 16 | width:100%; 17 | } 18 | .t-pre-bottom .t-btn {margin-left:5px;} 19 | 20 | .b-head div{ 21 | cursor:pointer; 22 | } 23 | .b-content{ 24 | padding:1px 0; 25 | border:0 none; 26 | margin-top:0; 27 | } 28 | 29 | .a-comment{ 30 | margin-top:6px; 31 | padding:10px; 32 | border:1px solid #ddd; 33 | background-color:#f9f9f9; 34 | } 35 | .a-comment-txt{ 36 | margin-right:88px; 37 | } 38 | .a-comment-txt textarea{ 39 | width:100%; 40 | height:60px; 41 | font-size:12px; 42 | padding:5px; 43 | } 44 | .a-comment-btn{ 45 | float:right; 46 | } 47 | .a-comment-btn .button{ 48 | height:70px; 49 | width:70px; 50 | cursor:pointer 51 | } 52 | -------------------------------------------------------------------------------- /www/css/login.css: -------------------------------------------------------------------------------- 1 | #main_wrap{ margin:2px 5px; } 2 | #body{ 3 | width:600px; 4 | height:280px; 5 | margin:20px auto; 6 | } 7 | .b-head{text-align:center;} 8 | .b-head span{ font-size:14px;} 9 | .b-content{ 10 | padding:20px; 11 | height:200px; 12 | } 13 | .b-content form{ margin:auto;} 14 | .l-error{ 15 | text-align:center; 16 | background:#fbf6d9; 17 | display:block; 18 | padding:5px; 19 | *zoom:1; 20 | } 21 | .l-error li{ 22 | padding-left:20px; 23 | line-height:20px; 24 | *zoom:1; 25 | } 26 | .l-error li samp{ 27 | height:18px; 28 | margin-right:6px; 29 | _margin-top:1px; 30 | width:8px; 31 | } 32 | .l-area{ 33 | display:block; 34 | padding:10px; 35 | overflow:hidden; 36 | } 37 | .l-area li{ 38 | line-height:35px; 39 | } 40 | .input{height:17px;width:150px;_margin-top:6px;} 41 | .l-area .t-label{ 42 | display:inline-block; 43 | width:180px; 44 | text-align:right; 45 | margin-right:10px; 46 | } 47 | .l-area a{ 48 | color:#598ede; 49 | text-decoration:underline; 50 | padding-left:5px; 51 | } 52 | .l-area .r-label{ 53 | margin-right:14px; 54 | } 55 | .op{ 56 | border-top:1px solid #CCC; 57 | height:50px; 58 | margin-top:10px; 59 | } 60 | .op input{ 61 | margin:15px -120px 0 167px; 62 | width:80px; 63 | } 64 | -------------------------------------------------------------------------------- /app/modules/Vote/shells/statistics.php: -------------------------------------------------------------------------------- 1 | $week and status=1 order by num desc,vid desc limit 10"; 10 | $res = $db->all($sql); 11 | nforum_cache_write("vote_week", $res); 12 | self::line('done'); 13 | 14 | self::line('write vote_month......', false); 15 | $week = strtotime(date("Y-m-01", time())); 16 | $sql = "select vid,subject,num from pl_vote where start>$week and status=1 order by num desc,vid desc limit 10"; 17 | $res = $db->all($sql); 18 | nforum_cache_write("vote_month", $res); 19 | self::line('done'); 20 | 21 | self::line('write vote_year......', false); 22 | $week = strtotime(date("Y-m-01", time())); 23 | $week = strtotime(date("Y-01-01", time())); 24 | $sql = "select vid,subject,num from pl_vote where start>$week and status=1 order by num desc,vid desc limit 10"; 25 | $res = $db->all($sql); 26 | nforum_cache_write("vote_year", $res); 27 | self::line('done'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /www/css/keyboard.css: -------------------------------------------------------------------------------- 1 | .board-list tr.kb td{ 2 | background-color:#C5E1FF 3 | } 4 | .a-wrap.kb{ 5 | border:2px solid #598EDE; 6 | } 7 | .m-table tr.kb td{ 8 | background-color:#C5E1FF 9 | } 10 | .widget.kb .widget-head{ 11 | border:2px solid #598EDE; 12 | border-bottom-width:0; 13 | } 14 | .widget.kb .edit-box{ 15 | border-left:2px solid #598EDE; 16 | border-right:2px solid #598EDE; 17 | } 18 | .widget.kb .widget-content{ 19 | border:2px solid #598EDE; 20 | border-top-width:0; 21 | } 22 | .w-list-line li.kb,.w-list-float li.kb{ 23 | background-color:#C5E1FF 24 | } 25 | .helper-title{ 26 | font-size:16px; 27 | font-weight:bold; 28 | text-align:center; 29 | padding:5px 20px 5px; 30 | border-bottom:1px solid #aaa; 31 | color:#444; 32 | } 33 | .helper-table, .helper-cell-table{ 34 | width:100%; 35 | text-align:center; 36 | } 37 | .helper-cell-table{ 38 | margin-top:8px; 39 | } 40 | .helper-table{ 41 | margin-bottom:5px; 42 | } 43 | .helper-cell{ 44 | vertical-align:top; 45 | } 46 | .helper-cell-key, .helper-cell-desc{ 47 | font-size:12px; 48 | padding:2px 0; 49 | color:#444; 50 | } 51 | .helper-cell-key{ 52 | width:40%; 53 | padding-right:0.8em; 54 | text-align:right; 55 | font-weight:bold; 56 | } 57 | .helper-cell-desc{ 58 | text-align:left; 59 | } 60 | .helper-cell-title{ 61 | font-size:14px; 62 | font-weight:bold; 63 | color:#598EDE; 64 | } 65 | -------------------------------------------------------------------------------- /www/css/m.css: -------------------------------------------------------------------------------- 1 | body,img,ul,li,form,p{margin:0; padding:0; list-style:none; border:0 none;} 2 | body{word-wrap:break-word} 3 | /*div,li,p{line-height:1.2em}*/ 4 | .sp,li,p{padding:3px} 5 | input,select,textarea{ 6 | margin:0px; 7 | padding:0px; 8 | border:1px solid #77a2d2; 9 | } 10 | a{color:#03f;text-decoration:none;} 11 | a:hover{ color:#000; text-decoration:none;} 12 | a.top{color:#f00} 13 | a.m{color:#f60} 14 | .nav{padding:3px 0} 15 | .nav a{padding:0 1px;} 16 | .nav a.plant{color:#000} 17 | .hl{ 18 | background-color:#ebf5ff; 19 | } 20 | .hla{ 21 | background-color:#E4E8EF; 22 | } 23 | .sec{ 24 | border-bottom:solid 1px #999; 25 | } 26 | .slist li{ 27 | border-top:1px dashed #ccc; 28 | } 29 | .list li{ 30 | border-top:1px solid #ccc; 31 | } 32 | .slist li:first-child,.list li:first-child{ 33 | border-top:0 none; 34 | } 35 | .f{ 36 | border:0 none; 37 | color:#069; 38 | font-weight:bold; 39 | } 40 | .btn{ 41 | border:1px solid #77a2d2; 42 | background:#ecf4fd; 43 | color:#4c6785; 44 | font-size:12px; 45 | } 46 | #wraper{ 47 | width:100%; 48 | } 49 | .logo{ 50 | color:#fff; 51 | background-color:#9dbb61; 52 | } 53 | .menu{ 54 | color:#fff; 55 | background-color:#49adc5; 56 | } 57 | .menu a{ 58 | color:#fff; 59 | } 60 | .menu a:hover{ 61 | color:#000; 62 | } 63 | 64 | #m_main{ 65 | } 66 | .m-login{ 67 | border-bottom:solid 1px #000; 68 | } 69 | .m-login input{ 70 | margin-bottom:2px; 71 | } 72 | -------------------------------------------------------------------------------- /app/plugins/Uaacl.php: -------------------------------------------------------------------------------- 1 | spider = !self::check($acl['spider']); 13 | 14 | if(!self::check($acl['global'])) 15 | nforum_error404(true); 16 | 17 | $m = strtolower($request->getModuleName()); 18 | $c = strtolower($request->getControllerName()); 19 | $a = strtolower($request->getActionName()); 20 | if('index' !== $m && isset($acl[$m])){ 21 | $acl = $acl[$m]; 22 | } 23 | if(isset($acl[$c][$a])){ 24 | $acl = $acl[$c][$a]; 25 | }else if(isset($acl[$c])){ 26 | $acl = $acl[$c]; 27 | }else{ 28 | $acl = array(); 29 | } 30 | if(!self::check($acl)) 31 | nforum_error404(true); 32 | } 33 | 34 | //true for allow false for deny 35 | //default:true 36 | public static function check($acl, $ua = null){ 37 | if(null === $ua) 38 | $ua = isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:''; 39 | foreach((array)$acl as $v){ 40 | if(!is_string($v[0])) continue; 41 | if(preg_match($v[0], $ua)) 42 | return $v[1]; 43 | } 44 | return true; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /www/js/forum.tmpl.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | var isPost = false 3 | ,tmpl_preview = _.template($('#tmpl_preview').html() || ''); 4 | $('#f_tmpl').submit(function(){ 5 | if(isPost){ 6 | DIALOG.alertDialog(SYS.code.MSG_REPEAT); 7 | return false; 8 | } 9 | $.post($(this).attr('action'), $(this).getPostData(), function(repo){ 10 | isPost = (repo.ajax_st == 1); 11 | DIALOG.ajaxDialog(repo); 12 | }); 13 | return false; 14 | }); 15 | $('#body').on('click', '#que_preview', function(){ 16 | var data = $('#f_tmpl').getPostData(); 17 | data.pre = 1; 18 | $.post($('#f_tmpl').attr('action'), data, function(repo){ 19 | if(repo.ajax_st == 0) 20 | DIALOG.ajaxDialog(repo); 21 | else{ 22 | DIALOG.formDialog(tmpl_preview(repo), 23 | {title:SYS.code.COM_PREVIEW, width:600, 24 | buttons:[ 25 | {text:SYS.code.COM_SUBMIT,click:function(){ 26 | $.post($('#f_tmpl').attr('action'), $('#f_tmpl').getPostData(), function(repo){ 27 | isPost = (repo.ajax_st == 1); 28 | DIALOG.ajaxDialog(repo); 29 | }); 30 | $(this).dialog('close'); 31 | }}, 32 | {text:SYS.code.COM_CANCAL,click:function(){$(this).dialog('close');}} 33 | ] 34 | }) ; 35 | } 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /www/css/widget.css: -------------------------------------------------------------------------------- 1 | .widget-add-filter{ 2 | text-align:center; 3 | } 4 | .widget-add-filter li{ 5 | padding:2px 8px; 6 | *padding:3px 8px 0px; 7 | margin:0 3px; 8 | display:inline-block; 9 | *display:inline; 10 | *zoom:1; 11 | } 12 | .widget-add-search{ 13 | margin:auto; 14 | width:380px; 15 | line-height:20px; 16 | } 17 | .widget-add-search span{ 18 | color:#3e6195; 19 | font-size:14px; 20 | font-weight:bold; 21 | vertical-align:middle; 22 | } 23 | .widget-add-search .input-text{ 24 | width:200px; 25 | vertical-align:middle; 26 | } 27 | .widget-add-search .button{ 28 | width:70px; 29 | margin-left:6px; 30 | vertical-align:middle; 31 | } 32 | .widget-add-search select{ 33 | margin-left:10px; 34 | } 35 | #widget_add{ 36 | margin:10px 0; 37 | padding:10px 10px; 38 | border:1px solid #c9d7f1; 39 | clear:both; 40 | } 41 | #widget_add li{ 42 | width:143px; 43 | height:143px; 44 | text-align:center; 45 | display:inline-block; 46 | *display:inline; 47 | *zoom:1 48 | } 49 | #widget_add li:hover{ 50 | background:url(./img/app/hover.gif) no-repeat left top; 51 | } 52 | .widget-add-title{ 53 | color:#4c72ac; 54 | font-size:14px; 55 | width:130px; 56 | margin:10px auto 0; 57 | height:18px; 58 | overflow:hidden; 59 | } 60 | .widget-add-logo{ 61 | height:73px; 62 | margin:0 auto; 63 | } 64 | .widget-add-submit{ 65 | width:110px; 66 | height:23px; 67 | margin:0 auto; 68 | margin-top:5px; 69 | } 70 | .widget-add-submit input{ 71 | width:110px; 72 | margin:auto; 73 | } 74 | #widget_add_form li{ margin:4px 0; } 75 | /*change widget end*/ 76 | -------------------------------------------------------------------------------- /lib/inc/cli.php: -------------------------------------------------------------------------------- 1 | $app)); 32 | 33 | $arg = $shell = strtolower(array_shift($argv)); 34 | if(false === ($m = strstr($shell, '.', true))){ 35 | if(!load(SHELL . DS . $shell)){ 36 | NF_Shell::help(); 37 | exit(); 38 | } 39 | }else{ 40 | $shell = substr(strstr($shell, '.'), 1); 41 | if(!load(MODULE . DS . ucfirst($m) . DS . 'shells' . DS .$shell)){ 42 | NF_Shell::help(); 43 | exit(); 44 | } 45 | } 46 | 47 | $class = ucfirst($shell) . 'Shell'; 48 | if(!class_exists($class) || !is_subclass_of($class, 'NF_Shell')){ 49 | NF_Shell::help(); 50 | exit(); 51 | } 52 | 53 | NF_Shell::line("nForum Shell"); 54 | NF_Shell::line("\nexecute: $arg\n"); 55 | $app->execute(array(new $class, 'main'), $argc - 3, $argv); 56 | } 57 | -------------------------------------------------------------------------------- /www/css/control.css: -------------------------------------------------------------------------------- 1 | #c_content{border:1px solid #598edd;margin-top:5px;padding-top:10px;padding-left:13px;} 2 | #c_content ul li a{ color:#598edd; text-decoration:underline; padding-top:3px;} 3 | 4 | /*user info start*/ 5 | #face_upload{display:inline-block;*display:inline;_zoom:1} 6 | #face_upload_info{padding-left:10px;color:red} 7 | .b-left-m{width:120px; float:left; font-size:14px; text-align:right; padding-top:3px; color:#666; font-weight:bold;} 8 | .b-right-m{font-size:12px; text-align:right;color:#666;padding-left:10px;display:inline-block;vertical-align:middle} 9 | .b-textarea{ width:510px; height:120px;_height:90px;} 10 | .u-img-d{float:left;border:1px solid #c9d7f1;height:122px; width:380px; overflow:hidden;padding:0 10px;} 11 | .u-img-d div{margin-top:12px;} 12 | .u-img-d span{display:inline-block;text-align:center;width:60px; padding-top:5px;} 13 | .u-img-d input{width:300px;} 14 | .u-img-show{float:left;border:1px solid #c9d7f1;width:120px; margin-left:10px; padding:1px;height:120px;text-align:center;} 15 | .u-img-show img{*zoom:1} 16 | .b-op{ border-top:1px solid #c9d7f1;padding-left:130px;padding-top:10px;} 17 | .b-op .button{margin-left:15px;} 18 | /*user info end*/ 19 | 20 | /* user passwd start*/ 21 | .b-nc-change{ border:0px; margin-top:-10px;} 22 | /* user passwd end*/ 23 | 24 | /* user custom start*/ 25 | #d_user{ width:100%; margin-top:1px;} 26 | #d_user td{ vertical-align:bottom; padding-top:10px; padding-bottom:3px; border-bottom:1px solid #c9d7f1;} 27 | #d_user tr:hover td{background-color: #f5f8fb} 28 | .u-title-1{ width:350px; padding-left:40px;} 29 | .u-title-1 span{ display:block; font-size:14px; font-weight:bold; color:#666; padding-bottom:3px;} 30 | .u-title-2 input{margin-left:5px;} 31 | .u-op{ border:0px; margin-top:0px;} 32 | /* user custom end*/ 33 | -------------------------------------------------------------------------------- /app/shells/widgetvalid.php: -------------------------------------------------------------------------------- 1 | 1; 7 | * delete from widget where id in (select id from tmp); 8 | * drop table tmp; 9 | * 10 | * @extends xw 11 | * @implements xw 12 | * @author xw 13 | */ 14 | 15 | class WidgetValidShell extends NF_Shell { 16 | public function main($argc, $argv){ 17 | load('inc/db'); 18 | $db = DB::getInstance(); 19 | $ret = $db->one("select count(*) as num from widget"); 20 | $num = $ret['num']; 21 | $start = 0;$step = 100000; 22 | while($start<$num){ 23 | $sql = "SELECT uid,col,row FROM `widget` order by uid,col,row limit $start,$step"; 24 | $ret = $db->all($sql); 25 | $id = $col = ""; 26 | $row = -100; 27 | $wrong = false; 28 | foreach($ret as $v){ 29 | if($id != $v['uid']){ 30 | $row = 1; 31 | $id = $v['uid']; 32 | $wrong = false; 33 | self::line("check $id\n"); 34 | } 35 | if($col != $v['col']){ 36 | $row = 1; 37 | $col = intval($v['col']); 38 | $wrong = false; 39 | } 40 | if($row != intval($v['row']) && $row != -100 && !$wrong){ 41 | self::line("$id\t$col\terror"); 42 | $row = -100; 43 | $wrong = true; 44 | } 45 | $row ++; 46 | } 47 | unset($ret); 48 | $start += $step; 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/modules/Api/pl_api.sql: -------------------------------------------------------------------------------- 1 | -- MySQL dump 10.11 2 | -- 3 | -- Host: localhost Database: bbs 4 | -- ------------------------------------------------------ 5 | -- Server version 5.0.86-log 6 | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 | /*!40101 SET NAMES utf8 */; 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 | /*!40103 SET TIME_ZONE='+00:00' */; 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 | 18 | -- 19 | -- Table structure for table `pl_api_session` 20 | -- 21 | 22 | DROP TABLE IF EXISTS `pl_api_session`; 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; 24 | /*!40101 SET character_set_client = utf8 */; 25 | CREATE TABLE `pl_api_session` ( 26 | `id` varchar(20) NOT NULL, 27 | `utmpnum` int(11) unsigned NOT NULL, 28 | `utmpkey` int(11) unsigned NOT NULL, 29 | `expire` int(10) unsigned NOT NULL, 30 | PRIMARY KEY (`id`), 31 | KEY `expire` (`expire`) 32 | ) ENGINE=MEMORY DEFAULT CHARSET=gbk; 33 | /*!40101 SET character_set_client = @saved_cs_client */; 34 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 35 | 36 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 37 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 38 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 39 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 40 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 41 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 42 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 43 | 44 | -- Dump completed on 2011-05-12 20:46:57 45 | -------------------------------------------------------------------------------- /lib/inc/xml.php: -------------------------------------------------------------------------------- 1 | <$tag />"); 6 | 7 | self::_encode($var, $tag, $xml, 0); 8 | return $xml->asXML(); 9 | 10 | } 11 | 12 | private static function _encode($var, $tag, &$xml, $dep){ 13 | switch (gettype($var)){ 14 | case 'boolean': 15 | $xml->addChild($tag, $var ? 'true' : 'false'); 16 | break; 17 | 18 | case 'NULL': 19 | $xml->addChild($tag); 20 | break; 21 | 22 | case 'integer': 23 | case 'double': 24 | case 'float': 25 | $xml->addChild($tag, (string)$var); 26 | break; 27 | 28 | case 'string': 29 | if(strlen($var) == 0) 30 | $xml->addChild($tag); 31 | else 32 | $xml->addChild($tag, htmlspecialchars($var)); 33 | break; 34 | 35 | case 'array': 36 | $child = ($dep === 0)?$xml:$xml->addChild($tag); 37 | if (is_array($var) && count($var) && (array_keys($var) !== range(0, count($var) - 1))) { 38 | foreach($var as $k => $v){ 39 | self::_encode($v, $k, $child, $dep + 1); 40 | } 41 | }else{ 42 | foreach($var as $v){ 43 | self::_encode($v, 'item', $child, $dep + 1); 44 | } 45 | } 46 | break; 47 | 48 | case 'object': 49 | $vars = get_object_vars($var); 50 | foreach($vars as $k => $v){ 51 | $child = $xml->addChild($k); 52 | $xml = self::_encode($v, $k, $child, $dep + 1); 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /www/css/mail.css: -------------------------------------------------------------------------------- 1 | .friend-list,.mail-list{border-top:1px solid #c9d7f1;} 2 | .title_1{ width:20px; padding-left:12px;} 3 | @media screen and (-webkit-min-device-pixel-ratio:0) { 4 | .title_1{width:30px;} 5 | } 6 | .title_2{ width:100px; padding-left:12px;} 7 | .title_3{ width:auto; padding-left:12px; font-size:12px;} 8 | .title_4{ width:150px; padding-left:12px; color:#717171;} 9 | .title_5{ width:250px; padding-left:12px; color:#717171;} 10 | .title_6{ width:60px; padding-left:12px; color:#717171;} 11 | .title_7{ width:30px; padding-left:12px; color:#717171;} 12 | .no-read a{ color:#598ede; font-weight:bold;} 13 | .middle{text-align:center padding-left:0} 14 | 15 | /* mail list start*/ 16 | .t-btn{float:left;padding-left:12px;} 17 | .t-btn input{margin-right:5px;} 18 | .t-btn .mail-select{padding-top:0;padding-bottom:0} 19 | .page{float:right;} 20 | .t-pre, .t-pre-bottom { 21 | padding:2px 0; 22 | width:100%; 23 | border-bottom:1px solid #c9d7f1; 24 | overflow:hidden; 25 | } 26 | .mail-list .m-table tr:hover{cursor:pointer} 27 | .mail-info{ 28 | float:right; 29 | padding-top:5px; 30 | padding-right:20px; 31 | } 32 | .mail-info-use,.mail-info-total{ 33 | display:inline-block; 34 | height:16px; 35 | line-height:16px; 36 | } 37 | .mail-info-bar{ 38 | display:inline-block; 39 | border:1px solid #598EDE; 40 | vertical-align:bottom; 41 | height:14px; 42 | margin:0 6px; 43 | width:100px; 44 | } 45 | .mail-info-scroll{ 46 | display:inline-block; 47 | height:14px; 48 | background-color:#598EDE; 49 | } 50 | .mail-info-warning{ 51 | background-color:red; 52 | border-color:red; 53 | } 54 | /* mail list end*/ 55 | 56 | /*friend start*/ 57 | .t-btn .user-select{padding-top:0;padding-bottom:0} 58 | .f-user-add{padding:4px 12px;border-bottom:1px solid #c9d7f1;} 59 | .f-user-add input{margin-left:5px} 60 | /*friend end*/ 61 | 62 | /*online*/ 63 | .t-pre-online .t-btn{margin-top:2px;*margin-top:6px;*padding-left:0} 64 | .t-pre-online .page{margin-top:0px;} 65 | /*online end*/ 66 | -------------------------------------------------------------------------------- /www/css/adv.css: -------------------------------------------------------------------------------- 1 | .title{ 2 | font-size:30px; 3 | font-weight:bold; 4 | color:#000; 5 | border-bottom:2px solid #bbb; 6 | text-align:center; 7 | margin: 10px auto; 8 | padding-bottom:6px; 9 | } 10 | #op{ 11 | border:1px solid #aaa; 12 | width:600px; 13 | margin:auto; 14 | } 15 | #selection {margin-top:10px;text-align:center;} 16 | #selection li{display:inline;margin-left:16px;} 17 | #selection a{font-size:14px; font-weight:bold} 18 | #selection .selected{color:red;} 19 | #page{text-align:center;} 20 | .pagination{ 21 | font-size:14; 22 | margin:0 auto; 23 | padding:10px 0; 24 | display:inline-block; 25 | *display:inline; 26 | *zoom:1; 27 | } 28 | #adv_filter{ 29 | margin:auto; 30 | margin-top:4px; 31 | padding:6px 0; 32 | border: 1px solid #aaa; 33 | width:574px; 34 | } 35 | #adv_filter li{ 36 | margin-left:14px; 37 | display:inline-block; 38 | *display:inline; 39 | *zoom:1; 40 | } 41 | #adv_filter .input-text{ 42 | width:80px; 43 | } 44 | #adv_filter .input-text[name="remark"]{ 45 | width:150px; 46 | } 47 | #add{margin-top:-5px;*margin-top:-1px} 48 | #adv_main{ 49 | margin-top:4px; 50 | margin-bottom:20px; 51 | min-width:1024px; 52 | } 53 | #adv_main table{ 54 | border:1px solid #aaa; 55 | width:85%; 56 | margin:auto; 57 | } 58 | #adv_main th, #adv_main td{ 59 | border-bottom:1px solid #aaa; 60 | border-right:1px solid #aaa; 61 | text-align:center; 62 | } 63 | #adv_main th{ height:25px; } 64 | #adv_main td{ height:28px; } 65 | .button{margin-right:5px;} 66 | .c_1{width:30px} 67 | .c_2{width:150px} 68 | .c_3{width:auto} 69 | .c_4{width:70px} 70 | .c_5{width:70px} 71 | .c_6{width:30px} 72 | .c_7{width:170px} 73 | .c_8{width:140px} 74 | .c_9{width:30px} 75 | .used{color:red;} 76 | .dialog-form li{padding:2px 0} 77 | .dialog-form li span{display:inline-block; width:70px; } 78 | .dialog-form li .input-text{ width:200px;} 79 | .dialog-form li .submit{ width:170px;display:block;margin:auto; } 80 | .ui-datepicker{z-index:3000} 81 | -------------------------------------------------------------------------------- /lib/model/collection.php: -------------------------------------------------------------------------------- 1 | _info); 26 | } 27 | 28 | /** 29 | * function getList get the board in collection 30 | * 31 | * @return array 32 | * @access public 33 | */ 34 | public function getList(){ 35 | $ret = array(); 36 | foreach($this->_info as $v){ 37 | if(!$v->isDir()) 38 | $ret[] = $v; 39 | } 40 | return $ret; 41 | } 42 | 43 | /** 44 | * function getDir get the dir board in collection 45 | * 46 | * @return array 47 | * @access public 48 | */ 49 | public function getDir(){ 50 | $ret = array(); 51 | foreach($this->_info as $v){ 52 | if($v->isDir()) 53 | $ret[] = $v; 54 | } 55 | return $ret; 56 | } 57 | 58 | /** 59 | * function getAll get the set 60 | * 61 | * @return array 62 | * @access public 63 | */ 64 | public function getAll(){ 65 | return $this->_info; 66 | } 67 | 68 | /** 69 | * function __construct 70 | * the info is a array contain the board 71 | * 72 | * @param $info 73 | * @access protected 74 | */ 75 | protected function __construct($info){ 76 | if(!is_array($info)) 77 | throw new CollectionNullException(); 78 | $this->_info = array(); 79 | foreach($info as $v){ 80 | $this->_info[] = new Board($v); 81 | } 82 | } 83 | } 84 | class CollectionNullException extends Exception{} 85 | -------------------------------------------------------------------------------- /www/css/post.css: -------------------------------------------------------------------------------- 1 | .post-list{ display:block; padding:0 30px} 2 | .post-list-item {padding-top:15px;} 3 | .post-list .upload{} 4 | .post-m{color:#666; font-size:14px; font-weight:bold; padding-bottom:4px;} 5 | .post-m span{color:red;font-size:12px;font-weight:normal} 6 | .post-title{ width:680px;font-size:18px;} 7 | .post-tag {width:680px;} 8 | .post-tag li{float:left;padding:2px 10px} 9 | .post-tag .tab-down{cursor:pointer;} 10 | .post-textarea{ height:200px; width:680px; border:1px solid #b6c3da;} 11 | .post-op{padding-bottom:5px} 12 | .post-op input{margin-right:5px} 13 | .post-select{margin-left:5px} 14 | .post-su{border-top:1px solid #c9d7f1; margin:25px 15px 10px 15px; padding-top:15px;} 15 | .post-su .button{font-size:14px;margin-left:100px; margin-right:-70px;padding:3px 4px;*padding:4px 4px 0;} 16 | #em_img{ border:1px solid #c9d7f1;display:block;height:auto;width:610px;clear:both;overflow:hidden} 17 | #con_c_area{ display:block; border:1px solid #c9d7f1; padding:5px; width:680px; overflow:visible;} 18 | 19 | /* tmpl list */ 20 | .col1{width:40px;} 21 | .col2{width:auto} 22 | .col3{width:70px} 23 | .col4{width:70px} 24 | .col5{width:400px} 25 | .col6{width:auto} 26 | /* tmpl list end */ 27 | 28 | /* tmpl que */ 29 | .tmpl{padding:10px 15px} 30 | .tmpl td{text-align:center;} 31 | .tmpl-op td{padding:4px 0} 32 | .tmpl-op input{margin-right:4px} 33 | /* tmpl que end */ 34 | 35 | /* upload */ 36 | #upload{ 37 | width:690px; 38 | } 39 | #upload_upload{ 40 | display:none; 41 | } 42 | #upload_op{margin:5px 0;position:relative} 43 | #upload_op input{margin-right:8px} 44 | #upload_info {font-size:14px;position:absolute;right:0;top:0;padding-top:5px} 45 | #upload_info span{color:red} 46 | #upload_info .upload-max-num{padding-right:8px;} 47 | #upload_result{width:100%;font-size:12px;border:1px solid #c9d7f1;} 48 | #upload_result tbody{display:none} 49 | #upload_result th,#upload_result td{border-bottom:1px solid #c9d7f1;vertical-align:center;text-align:center;height:20px} 50 | #upload_result th{background-color:#f5f8fb;} 51 | #upload_result tbody tr:hover td{background-color:#f5f8fb;} 52 | /* upload end */ 53 | -------------------------------------------------------------------------------- /app/modules/Api/controllers/Section.php: -------------------------------------------------------------------------------- 1 | params['name'])){ 7 | $this->error(ECode::$SEC_NOSECTION); 8 | } 9 | try{ 10 | $num = $this->params['name']; 11 | $sec = Section::getInstance($num, Section::$NORMAL); 12 | }catch(SectionNullException $e){ 13 | $this->error(ECode::$SEC_NOSECTION); 14 | }catch(BoardNullException $e){ 15 | $this->error(ECode::$BOARD_NOBOARD); 16 | } 17 | 18 | $wrapper = Wrapper::getInstance(); 19 | 20 | $data = array(); 21 | $data = $wrapper->section($sec, array('status' => true)); 22 | $secs = $sec->getAll(); 23 | 24 | $ret = false; 25 | $data['board'] = $data['sub_section'] = array(); 26 | if(!$sec->isNull()){ 27 | foreach($secs as $brd){ 28 | if($brd->isDir()) 29 | $data['sub_section'][] = $brd->NAME; 30 | else 31 | $data['board'][] = $wrapper->board($brd, array('status'=>true)); 32 | } 33 | } 34 | 35 | $this->set('data', $data); 36 | } 37 | 38 | public function rootAction(){ 39 | load("model/section"); 40 | $secs = c('section'); 41 | $wrapper = Wrapper::getInstance(); 42 | $data = array(); 43 | foreach(array_keys($secs) as $v){ 44 | try{ 45 | $sec = Section::getInstance($v, Section::$NORMAL); 46 | }catch(SectionNullException $e){ 47 | $this->error(ECode::$SEC_NOSECTION); 48 | }catch(BoardNullException $e){ 49 | $this->error(ECode::$BOARD_NOBOARD); 50 | } 51 | $data[] = $wrapper->section($sec, array('status' => true)); 52 | } 53 | $data = array('section_count' => count($data), 'section' => $data); 54 | $this->set('data', $data); 55 | $this->set('root', 'sections'); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /www/js/html5.js: -------------------------------------------------------------------------------- 1 | // iepp v2.1pre @jon_neal & @aFarkas github.com/aFarkas/iepp 2 | // html5shiv @rem remysharp.com/html5-enabling-script 3 | // Dual licensed under the MIT or GPL Version 2 licenses 4 | /*@cc_on(function(a,b){function r(a){var b=-1;while(++bfront); 15 | 16 | $m = strtolower($request->getModuleName()); 17 | $c = strtolower($request->getControllerName()); 18 | $a = strtolower($request->getActionName()); 19 | 20 | if('index' !== $m && isset($acl[$m])){ 21 | $acl = $acl[$m]; 22 | } 23 | if(isset($acl[$c][$a])){ 24 | $acl = $acl[$c][$a]; 25 | }else if(isset($acl[$c])){ 26 | $acl = $acl[$c]; 27 | }else{ 28 | $acl = array(); 29 | } 30 | if(!self::check($acl)) 31 | nforum_error(ECode::$SYS_IPBAN, $request->front); 32 | } 33 | 34 | //true for allow false for deny 35 | public static function check($list, $ip = null){ 36 | $ip = (string)(is_null($ip)?ip():$ip); 37 | $v4 = !nforum_is_ipv6($ip); 38 | foreach((array)$list as $v){ 39 | if(!isset($v[0]) || !is_string($v[0])) continue; 40 | $tv4 = (strpos($v[0], ':') === false); 41 | if($v4 && $tv4){ 42 | if(mask_equal(ip2long($ip), ip2long($v[0]), $v[1])) 43 | return $v[2]; 44 | }else if(!$v4 && !$tv4){ 45 | $arr1 = ipv62long($ip); 46 | $arr2 = ipv62long($v[0]); 47 | if($v[1] > MASK_NUM_V6){ 48 | if(!mask_equal_v6($arr1[1], $arr2[1], $v[1] - MASK_NUM_V6)) 49 | continue; 50 | } 51 | $mask = ($v[1] > MASK_NUM_V6)?MASK_NUM_V6:$v[1]; 52 | if(mask_equal_v6($arr1[0], $arr2[0], $mask)) 53 | return $v[2]; 54 | } 55 | } 56 | return true; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /lib/inc/shell.php: -------------------------------------------------------------------------------- 1 | ').attr(d.extend(h(this),{type:'text'}))}r.removeAttr('name').data({'placeholder-password':true,'placeholder-id':p}).bind('focus.placeholder',b);q.data({'placeholder-textinput':r,'placeholder-id':p}).before(r)}q=q.removeAttr('id').hide().prev().attr('id',p).show()}q.addClass('placeholder');q[0].value=q.attr('placeholder')}else{q.removeClass('placeholder')}}}(this,document,jQuery)); -------------------------------------------------------------------------------- /app/modules/Api/lib/session.php: -------------------------------------------------------------------------------- 1 | uid = BasicAuth::getCurrentUser(); 16 | if(false === $this->uid) 17 | throw new LoginException(ECode::$LOGIN_ERROR); 18 | $db = DB::getInstance(); 19 | if($u = $db->one('select id,utmpnum,utmpkey,expire from pl_api_session where id=?', array($this->uid))){ 20 | $this->uid = $u['id']; 21 | $this->utmpnum = $u['utmpnum']; 22 | $this->utmpkey = $u['utmpkey']; 23 | if(parent::init()) 24 | return true; 25 | } 26 | 27 | try{ 28 | //check pwd in BasicAuth, $pwd is null 29 | parent::login($this->uid); 30 | }catch(LoginException $e){ 31 | sleep(1); 32 | if($u = $db->one('select id,utmpnum,utmpkey,expire from pl_api_session where id=?', array($this->uid))){ 33 | $this->uid = $u['id']; 34 | $this->utmpnum = $u['utmpnum']; 35 | $this->utmpkey = $u['utmpkey']; 36 | if(parent::init()) 37 | return true; 38 | } 39 | throw $e; 40 | } 41 | 42 | if($u){ 43 | $val = array('utmpnum' => $this->utmpnum, 'utmpkey' => $this->utmpkey, 'expire' => time()); 44 | $db->update('pl_api_session', $val, 'where id=?', array($this->uid)); 45 | }else{ 46 | $val = array('id' => $this->uid, 'utmpnum' => $this->utmpnum, 'utmpkey' => $this->utmpkey, 'expire' => time()); 47 | $db->insert('pl_api_session', $val); 48 | } 49 | } 50 | 51 | public function logout(){ 52 | parent::logout(); 53 | $db = DB::getInstance(); 54 | $db->delete('pl_api_session', 'where id=?', array($this->uid)); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/modules/Api/lib/controller.php: -------------------------------------------------------------------------------- 1 | 'application/xml', 'json'=> 'application/json'); 6 | 7 | protected $_method = array(); 8 | 9 | public function init(){ 10 | c('application.encoding', 'utf-8'); 11 | $this->cache(false); 12 | parent::init(); 13 | $this->getRequest()->front = true; 14 | $this->_abase = c('modules.api.base'); 15 | 16 | if($this->getRequest()->ext === 'html' 17 | && !($this->getRequest()->getControllerName() === 'Attachment' && $this->getRequest()->getActionName() === 'download')) 18 | exit('Unknow Return Format'); 19 | $this->_checkMethod(); 20 | load('inc/wrapper'); 21 | } 22 | 23 | public function requestLogin(){ 24 | if(!NF_ApiSession::getInstance()->isLogin){ 25 | $this->error(ECode::$SYS_NOLOGIN); 26 | } 27 | } 28 | 29 | protected function beforeRender(){ 30 | $this->getRequest()->html = false; 31 | $this->set('no_html_data', $this->get('data')); 32 | } 33 | 34 | protected function afterRender(){} 35 | 36 | protected function _initSession(){ 37 | load('api.session'); 38 | try{ 39 | NF_ApiSession::getInstance()->init(); 40 | }catch(LoginException $e){ 41 | $this->error($e->getMessage()); 42 | } 43 | } 44 | 45 | protected function _checkMethod(){ 46 | $ms = array('post'/*, 'head', 'put', 'options', 'delete'*/); 47 | $a = $this->getRequest()->getActionName(); 48 | $m = strtolower($this->getRequest()->getMethod()); 49 | if('get' === $m){ 50 | if(!isset($this->_method['get']) || !in_array($a, $this->_method['get'])){ 51 | foreach($ms as $v){ 52 | if(isset($this->_method[$v]) && in_array($a, $this->_method[$v])) 53 | $this->error(ECode::$SYS_REQUESTERROR); 54 | } 55 | } 56 | }else if(!isset($this->_method[$m]) || !in_array($a, $this->_method[$m])){ 57 | $this->error(ECode::$SYS_REQUESTERROR); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/modules/Api/controllers/Board.php: -------------------------------------------------------------------------------- 1 | params['name'])){ 10 | $this->error(ECode::$BOARD_NONE); 11 | } 12 | 13 | try{ 14 | $boardName = $this->params['name']; 15 | if(preg_match("/^\d+$/", $boardName)) 16 | throw new BoardNullException(); 17 | $this->_board = Board::getInstance($boardName); 18 | if($this->_board->isDir()) 19 | throw new BoardNullException(); 20 | }catch(BoardNullException $e){ 21 | $this->error(ECode::$BOARD_UNKNOW); 22 | } 23 | 24 | if(isset($this->params['url']['mode'])){ 25 | $mode = (int)trim($this->params['url']['mode']); 26 | $this->_board->setMode($mode); 27 | } 28 | if(!$this->_board->hasReadPerm(User::getInstance())){ 29 | $this->error(ECode::$BOARD_NOPERM); 30 | } 31 | $this->_board->setOnBoard(); 32 | } 33 | 34 | public function indexAction(){ 35 | 36 | $wrapper = Wrapper::getInstance(); 37 | 38 | $data = array(); 39 | $data = $wrapper->board($this->_board, array('status' => true)); 40 | load('inc/pagination'); 41 | 42 | $count = isset($this->params['url']['count'])?$this->params['url']['count']:c("pagination.threads"); 43 | $page = isset($this->params['url']['page'])?$this->params['url']['page']:1; 44 | if(($count = intval($count)) <= 0) 45 | $count = c("pagination.threads"); 46 | if($count > c('modules.api.page_item_limit')) 47 | $count = c("pagination.article"); 48 | $page = intval($page); 49 | $pagination = new Pagination($this->_board, $count); 50 | $articles = $pagination->getPage($page); 51 | $data['pagination'] = $wrapper->page($pagination); 52 | foreach($articles as $v){ 53 | $data['article'][] = $wrapper->article($v, array('threads'=> $this->_board->getMode() == Board::$THREAD)); 54 | } 55 | $this->set('data', $data); 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /lib/model/blacklist.php: -------------------------------------------------------------------------------- 1 | _user = $u; 20 | } 21 | 22 | public static function add($id){ 23 | $ret = bbs_add_ignore($id); 24 | switch($ret){ 25 | case -1: 26 | throw new BlacklistAddException(ECode::$BLACKLIST_MAX); 27 | break; 28 | case -2: 29 | throw new BlacklistAddException(ECode::$BLACKLIST_ERROR); 30 | break; 31 | case -3: 32 | throw new BlacklistAddException(ECode::$SYS_ERROR); 33 | break; 34 | case -4: 35 | throw new BlacklistAddException(ECode::$USER_NOID); 36 | break; 37 | } 38 | return true; 39 | } 40 | 41 | public static function delete($id){ 42 | $ret = bbs_delete_ignore($id); 43 | switch($ret){ 44 | case 2: 45 | throw new BlacklistDeleteException(ECode::$BLACKLIST_NOEXIST); 46 | break; 47 | case 3: 48 | throw new BlacklistDeleteException(ECode::$SYS_ERROR); 49 | break; 50 | } 51 | return true; 52 | } 53 | 54 | public function getTotalNum(){ 55 | if(null === $this->_num) 56 | $this->_num = (int)bbs_countignores($this->_user->userid); 57 | return $this->_num; 58 | } 59 | 60 | /** 61 | * return array(array(ID)...) 62 | */ 63 | public function getRecord($start, $num){ 64 | if($this->getTotalNum() === 0) 65 | return array(); 66 | $ret = bbs_getignores($this->_user->userid, $start - 1 ,$num); 67 | if(!$ret) 68 | return array(); 69 | return $ret; 70 | } 71 | } 72 | class BlacklistNullException extends Exception{} 73 | class BlacklistAddException extends Exception{} 74 | class BlacklistDeleteException extends Exception{} 75 | -------------------------------------------------------------------------------- /app/modules/Mobile/route.php: -------------------------------------------------------------------------------- 1 | 'index', 'module' => 'mobile')); 4 | $export[] = array($base . '/', array('controller' => 'index', 'module' => 'mobile')); 5 | $export[] = array($base . '/article/:name/:action/:gid/:mode', array('controller' => 'article', 'module' => 'mobile', 'action' => null, 'mode' => null), array('gid' => '\d+')); 6 | $export[] = array($base . '/article/:name/:action', array('controller' => 'article', 'module' => 'mobile')); 7 | $export[] = array($base . '/board/:name/:mode', array('controller' => 'board', 'module' => 'mobile', 'mode' => null)); 8 | $export[] = array($base . '/att/:name/:mode/:id/:pos/:type', array('controller' => 'attachment', 'action' => 'download', 'mode' => null, 'type' => null), array('id' => '\d+', 'pos' => '\d+', 'mode' => '\d+', 'type' => '[A-Za-z][\w-]*')); 9 | $export[] = array($base . '/section/:name', array('controller' => 'section', 'module' => 'mobile', 'name' => null)); 10 | $export[] = array($base . '/mail/send', array('controller' => 'mail', 'module' => 'mobile', 'action' => 'send')); 11 | $export[] = array($base . '/mail/:type/:action/:num', array('controller' => 'mail', 'module' => 'mobile', 'num' => null), array('num'=> '\d+')); 12 | $export[] = array($base . '/mail/:type', array('controller' => 'mail', 'module' => 'mobile', 'action' => 'index', 'type' => null)); 13 | $export[] = array($base . '/refer/:type/:action', array('controller' => 'refer', 'module' => 'mobile', 'action' => null)); 14 | $export[] = array($base . '/favor/:num', array('controller' => 'favor', 'module' => 'mobile', 'action' => 'index', 'num' => null), array('num' => '\d+')); 15 | $export[] = array($base . '/go', array('controller' => 'index', 'module' => 'mobile', 'action' => 'searchBoard')); 16 | $export[] = array($base . '/hot/:t', array('controller' => 'index', 'module' => 'mobile', 'action' => 'hot', 't' => null)); 17 | $export[] = array($base . '/user/query/:id', array('controller' => 'user', 'module' => 'mobile', 'action' => 'query')); 18 | $export[] = array($base . '/user/:action', array('controller' => 'user', 'module' => 'mobile')); 19 | $export[] = array($base . '/friend/:action', array('controller' => 'friend', 'module' => 'mobile')); 20 | $export[] = array($base . '/*', array('controller' => 'error', 'module' => 'mobile', 'action' => 'error'), array(), false); 21 | -------------------------------------------------------------------------------- /app/modules/Api/controllers/Blacklist.php: -------------------------------------------------------------------------------- 1 | array('add', 'delete')); 6 | 7 | public function init(){ 8 | parent::init(); 9 | $this->requestLogin(); 10 | } 11 | 12 | public function listAction(){ 13 | $data = array(); 14 | $wrapper = Wrapper::getInstance(); 15 | try{ 16 | $bl = new Blacklist(User::getInstance()); 17 | 18 | load('inc/pagination'); 19 | $count = isset($this->params['url']['count'])?$this->params['url']['count']:c("pagination.friend"); 20 | $page = isset($this->params['url']['page'])?$this->params['url']['page']:1; 21 | if(($count = intval($count)) <= 0) 22 | $count = c("pagination.friend"); 23 | if($count > c('modules.api.page_item_limit')) 24 | $count = c("pagination.friend"); 25 | $page = intval($page); 26 | 27 | $pagination = new Pagination($bl, $count); 28 | $data['user'] = array();; 29 | foreach($pagination->getPage($page) as $v){ 30 | try{ 31 | $data['user'][] = $wrapper->user(User::getInstance($v['ID'], false)); 32 | }catch(Exception $e){ 33 | $data['user'][] = $v['ID']; 34 | } 35 | } 36 | 37 | $data['pagination'] = $wrapper->page($pagination); 38 | }catch(BlacklistNullException $e){ 39 | $this->error($e->getMessage()); 40 | } 41 | 42 | $this->set('data', $data); 43 | } 44 | 45 | public function addAction(){ 46 | if(!isset($this->params['form']['id'])) 47 | $this->error(); 48 | try{ 49 | Blacklist::add($this->params['form']['id']); 50 | }catch(BlacklistAddException $e){ 51 | $this->error($e->getMessage()); 52 | } 53 | 54 | $this->set('data', array('status'=>true)); 55 | } 56 | 57 | public function deleteAction(){ 58 | if(!isset($this->params['form']['id'])) 59 | $this->error(); 60 | try{ 61 | Blacklist::delete($this->params['form']['id']); 62 | }catch(BlacklistDeleteException $e){ 63 | $this->error($e->getMessage()); 64 | } 65 | 66 | $this->set('data', array('status'=>true)); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /www/js/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get the value of a cookie with the given name. 3 | * 4 | * @example $.cookie('the_cookie'); 5 | * @desc Get the value of a cookie. 6 | * 7 | * @param String name The name of the cookie. 8 | * @return The value of the cookie. 9 | * @type String 10 | * 11 | * @name $.cookie 12 | * @cat Plugins/Cookie 13 | * @author Klaus Hartl/klaus.hartl@stilbuero.de 14 | */ 15 | jQuery.cookie = function(name, value, options) { 16 | if (typeof value != 'undefined') { // name and value given, set cookie 17 | options = options || {}; 18 | if (value === null) { 19 | value = ''; 20 | options.expires = -1; 21 | } 22 | var expires = ''; 23 | if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { 24 | var date; 25 | if (typeof options.expires == 'number') { 26 | date = new Date(); 27 | date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); 28 | } else { 29 | date = options.expires; 30 | } 31 | expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE 32 | } 33 | // CAUTION: Needed to parenthesize options.path and options.domain 34 | // in the following expressions, otherwise they evaluate to undefined 35 | // in the packed version for some reason... 36 | var path = options.path ? '; path=' + (options.path) : ''; 37 | var domain = options.domain ? '; domain=' + (options.domain) : ''; 38 | var secure = options.secure ? '; secure' : ''; 39 | document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 40 | } else { // only name given, get cookie 41 | var cookieValue = null; 42 | if (document.cookie && document.cookie != '') { 43 | var cookies = document.cookie.split(';'); 44 | for (var i = 0; i < cookies.length; i++) { 45 | var cookie = jQuery.trim(cookies[i]); 46 | // Does this cookie string begin with the name we want? 47 | if (cookie.substring(0, name.length + 1) == (name + '=')) { 48 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 49 | break; 50 | } 51 | } 52 | } 53 | return cookieValue; 54 | } 55 | }; 56 | -------------------------------------------------------------------------------- /lib/inc/cookie.php: -------------------------------------------------------------------------------- 1 | _prefix])){ 22 | if(null === $key) 23 | return $_COOKIE[$this->_prefix]; 24 | if(!isset($_COOKIE[$this->_prefix][$key])) 25 | return null; 26 | if($decrypt) 27 | return $this->decrypt($_COOKIE[$this->_prefix][$key]); 28 | return $_COOKIE[$this->_prefix][$key]; 29 | } 30 | return null; 31 | } 32 | 33 | public function write($key, $value, $encrypt = false, $expires = null){ 34 | $now = time(); 35 | if(null === $expires) 36 | $expires = 0; 37 | else if(is_int($expires) || is_numeric($expires)) 38 | $expires = $now + intval($expires); 39 | else 40 | $expires = strtotime($expires, $now); 41 | 42 | if($encrypt) $value = $this->encrypt($value); 43 | 44 | setcookie($this->_prefix . '[' . $key . ']', $value, $expires, $this->_path, $this->_domain); 45 | } 46 | 47 | public function delete($key){ 48 | $this->write($key, '', time() - 88218); 49 | } 50 | 51 | public function encrypt($var){ 52 | return urlencode($this->_getKey(strlen($var)) ^ strval($var)); 53 | } 54 | 55 | public function decrypt($var){ 56 | return $this->_getKey(strlen(urldecode($var))) ^ urldecode(strval($var)); 57 | } 58 | 59 | private function _getKey($len){ 60 | $ip = ip(); 61 | if(strpos($ip, ':') !== false) 62 | $ip = join(":", array_slice(explode(':', $ip, 5), 0, 4))."::1"; 63 | $hash = sha1($ip); 64 | $key = substr($hash, 4, $len); 65 | return $key; 66 | } 67 | 68 | private function __construct($cfg){ 69 | $this->_prefix = $cfg['prefix']; 70 | $this->_domain = $cfg['domain']; 71 | $this->_path = $cfg['path']; 72 | $this->_encryption = $cfg['encryption']; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /lib/inc/view.php: -------------------------------------------------------------------------------- 1 | ext; 14 | if(isset(self::$_views[$ext])) 15 | return self::$_views[$ext]; 16 | 17 | if(!load("inc/views/{$ext}")) 18 | exit(); 19 | $class = ucfirst($ext) . 'View'; 20 | 21 | if(!class_exists($class)) 22 | exit(); 23 | if(!is_subclass_of($class, __CLASS__)) 24 | exit(); 25 | 26 | return (self::$_views[$ext] = new $class($request)); 27 | } 28 | 29 | public function __construct($request){ 30 | $this->_request = $request; 31 | } 32 | 33 | public function render($tpl, $tpl_vars = array()){ 34 | return ''; 35 | } 36 | 37 | public function display($tpl, $tpl_vars = null){ 38 | echo $this->render($tpl, $tpl_vars); 39 | } 40 | 41 | public function assign($name, $value = null){ 42 | return $this->set($name, $value); 43 | } 44 | 45 | 46 | /** 47 | * assing variable to templete 48 | * @param $one string or array 49 | * @param $two mixed 50 | */ 51 | public function set($one, $two = null) { 52 | if(is_array($one) && is_null($two)){ 53 | foreach($one as $k => $v){ 54 | $this->_vars[$k] = $v; 55 | } 56 | } 57 | if(is_string($one) && !is_null($two)){ 58 | $this->_vars[$one] = $two; 59 | } 60 | } 61 | 62 | /** 63 | * get variable of templete 64 | * @param $name string 65 | * @return value|null 66 | */ 67 | public function get($name = null) { 68 | return isset($this->_vars[$name])?$this->_vars[$name]:null; 69 | } 70 | 71 | public function clear($one){ 72 | if(is_array($one)){ 73 | foreach($one as $k => $v){ 74 | unset($this->_vars[$k]); 75 | } 76 | } 77 | if(is_string($one)){ 78 | unset($this->_vars[$one]); 79 | } 80 | } 81 | 82 | public function clearAll(){ 83 | $this->_vars = array(); 84 | } 85 | 86 | public function getScriptPath(){ return '';} 87 | public function setScriptPath($dir){} 88 | 89 | protected function _initHeader(){ 90 | if($this->_initHeader) return; 91 | $this->_initHeader = true; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /lib/model/template.php: -------------------------------------------------------------------------------- 1 | array 7 | 'TITLE' => string 'title' (length=5) 8 | 'TITLE_TMPL' => string '' (length=0) 9 | 'CONT_NUM' => int 2 10 | 'FILENAME' => string '' (length=0) 11 | 'NUM' => int 12 | q1 => array 13 | 'TEXT' => string '111111' (length=6) 14 | 'LENGTH' => int 11 15 | q2 => array 16 | 'TEXT' => string '222' (length=3) 17 | 'LENGTH' => int 22 18 | 19 | * @extends xw 20 | * @implements xw 21 | * @author xw 22 | */ 23 | class Template extends OverloadObject{ 24 | 25 | protected $_que = array(); 26 | private $_board; 27 | private $_num; 28 | 29 | public static function getTemplates($board){ 30 | 31 | $res = array(); 32 | $num = bbs_get_tmpls($board->NAME, $res); 33 | if($num <= 0) 34 | $res = array(); 35 | else 36 | foreach($res as $k=>&$v){ 37 | $v = new Template($v, $k+1, $board); 38 | } 39 | load('inc/pagination'); 40 | return new ArrayPageableAdapter($res); 41 | } 42 | 43 | public static function getInstance($num, $board){ 44 | $res = array(); 45 | $retnum = bbs_get_tmpl_from_num($board->NAME,$num,$res); 46 | if($retnum <= 0 || $res[0]["CONT_NUM"] == 0) 47 | throw new TemplateNullException(); 48 | $info = array_shift($res); 49 | return new Template($info, $num, $board, $res); 50 | } 51 | 52 | public function getQ($num){ 53 | if(!isset($this->_que[$num])) 54 | throw new TemplateQNullException(); 55 | return $this->_que[$num]; 56 | } 57 | 58 | public function getPreview($val){ 59 | $tmp = "tmp/" . User::getInstance()->userid . ".tmpl.tmp" ; 60 | $title = bbs_make_tmpl_file($this->_board->NAME, $this->NUM, @$val[0], @$val[1], @$val[2], @$val[3], @$val[4], @$val[5], @$val[6], @$val[7], @$val[8], @$val[9], @$val[10], @$val[11], @$val[12], @$val[13], @$val[14], @$val[15], @$val[16], @$val[17], @$val[18], @$val[19], @$val[20]); 61 | return array($title, bbs_printansifile_noatt($tmp), file_get_contents($tmp)); 62 | } 63 | 64 | private function __construct($info, $num, $board, $que = array()){ 65 | $info['NUM'] = $num; 66 | $this->_info = $info; 67 | $this->_board = $board; 68 | $this->_que = $que; 69 | } 70 | } 71 | class TemplateNullException extends Exception {} 72 | class TemplateQNullException extends Exception {} 73 | -------------------------------------------------------------------------------- /lib/inc/packer.php: -------------------------------------------------------------------------------- 1 | pack($v, $type, $check); 24 | } 25 | return $tmp; 26 | } 27 | if(!file_exists($file)) 28 | return ''; 29 | $cachePath = CACHE . DS . "asset" . DS; 30 | $cache = $cachePath . substr(md5($file), 0, 10) . basename($file); 31 | if(file_exists($cache)){ 32 | if(!$check || filemtime($file) > filemtime($cache)){ 33 | file_put_contents($cache, $this->_compress($file, $type)); 34 | } 35 | }else{ 36 | file_put_contents($cache, $this->_compress($file, $type)); 37 | } 38 | return file_get_contents($cache); 39 | } 40 | 41 | public function setEncode($v){ 42 | if(in_array($v, array(0, 10, 62, 95))) 43 | $this->_js_encode = $v; 44 | } 45 | 46 | private function _compress($file, $type){ 47 | $func = "_{$type}_compress"; 48 | $content = file_get_contents($file); 49 | if(method_exists($this, $func)){ 50 | $content = call_user_func(array($this,$func), $content); 51 | } 52 | return $content; 53 | } 54 | 55 | private function _js_compress($content){ 56 | load('inc/jspacker'); 57 | $js = new JavaScriptPacker($content, $this->_js_encode, true, false); 58 | $this->setEncode(0); 59 | return $js->pack(); 60 | } 61 | 62 | private function _css_compress($content){ 63 | $pattern = array("/\/\*[\s\S]*?\*\//" 64 | ,"/(\s*[\n\r]+\s*)+/" 65 | ,"/\s*([{}:;,])\s*/" 66 | ,"/;}/" 67 | ,"/ +/" 68 | ,"/(?_getSmarty()->template_dir = $path; 7 | } 8 | 9 | public function getScriptPath(){ 10 | return $this->_getSmarty()->template_dir; 11 | } 12 | 13 | /** 14 | * function render 15 | * render a tpl via $tpl and $tpl_vars, return html 16 | * $path is base on VIEWS 17 | * 18 | * @param string $tpl 19 | * @param array $tpl_vars 20 | * @return string 21 | */ 22 | public function render($tpl, $tpl_vars = array()) { 23 | $this->_initHeader(); 24 | $smarty = $this->_getSmarty(); 25 | $smarty->assign($this->_vars); 26 | $smarty->assign($tpl_vars); 27 | return $smarty->fetch($tpl); 28 | } 29 | 30 | public function setModule($module){ 31 | $smarty = $this->_getSmarty(); 32 | $smarty->compile_id = $module; 33 | } 34 | 35 | protected function _initHeader(){ 36 | parent::_initHeader(); 37 | header('Content-Type:text/html;charset=' . c('application.encoding')); 38 | } 39 | 40 | private function _getSmarty(){ 41 | if(null === $this->_smarty){ 42 | define('SMARTY_RESOURCE_CHAR_SET', 'ISO-8859-1'); 43 | require('Smarty.class.php'); 44 | $this->_smarty = new Smarty(); 45 | $this->_smarty->caching = false; 46 | $this->_smarty->template_dir = VIEW; 47 | $this->_smarty->compile_dir = TMP . DS . 'compile'; 48 | $this->_smarty->cache_dir = CACHE; 49 | $this->_smarty->left_delimiter = '<{'; 50 | $this->_smarty->right_delimiter = '}>'; 51 | $c = c('view.smarty'); 52 | $this->_smarty->compile_check = $c['compile_check']; 53 | $this->_smarty->force_compile = $c['force_compile']; 54 | $this->_initFilter(); 55 | } 56 | return $this->_smarty; 57 | } 58 | 59 | private function _initFilter(){ 60 | if(c('view.pack.html')){ 61 | if(method_exists($this->_getSmarty(), "register_prefilter")) 62 | $this->_getSmarty()->register_prefilter("smarty_htmlCompress"); 63 | else 64 | $this->_getSmarty()->registerFilter("pre", "smarty_htmlCompress"); 65 | } 66 | } 67 | } 68 | function smarty_htmlCompress($out, &$smarty){ 69 | $pattern = array( 70 | "//", 71 | "/(\s*[\n\r]+\s*)+/" 72 | ); 73 | $replace = array("", ""); 74 | $out = preg_replace($pattern, $replace, $out); 75 | return $out; 76 | } 77 | -------------------------------------------------------------------------------- /lib/inc/thumbnail.php: -------------------------------------------------------------------------------- 1 | getFileName(); 15 | $dest = self::getArchiveThumbnail($type, $archive, $pos); 16 | 17 | if(!file_exists($dest) || filemtime($dest) < filemtime($file)){ 18 | $atts = $archive->getAttList(false); 19 | $find = false; 20 | foreach($atts as $v){ 21 | if(intval($pos) === $v['pos'] && 22 | in_array(strtolower(substr(strrchr($v['name'], "."), 1)), array('jpg', 'jpeg', 'png', 'gif'))) 23 | $find = true; 24 | } 25 | if(!$find) 26 | nforum_error404(true); 27 | load('inc/image'); 28 | ob_start(); 29 | $archive->getAttach($pos); 30 | try{ 31 | $img = new Image(ob_get_clean(), true); 32 | $img->thumbnail($dest, $types[$type][0], $types[$type][1]); 33 | }catch(ImageNullException $e){ 34 | exit(); 35 | } 36 | } 37 | header('Content-Type: image/jpeg'); 38 | echo file_get_contents($dest); 39 | exit(); 40 | } 41 | 42 | //check and make thumbnail for file, then output 43 | public static function file($type, $src){ 44 | $types = c('thumbnail'); 45 | if(!in_array($type, array_keys($types))) 46 | nforum_error404(true); 47 | 48 | $dest = self::getFileThumbnail($type, $src); 49 | if(!file_exists($dest) || filemtime($dest) < filemtime($src)){ 50 | load('inc/image'); 51 | try{ 52 | $img = new Image($src); 53 | $img->thumbnail($dest, $types[$type][0], $types[$type][1]); 54 | }catch(ImageNullException $e){ 55 | nforum_error404(true); 56 | } 57 | } 58 | header('Content-Type: image/jpeg'); 59 | echo file_get_contents($dest); 60 | exit(); 61 | } 62 | 63 | public static function getFileThumbnail($type, $src){ 64 | return CACHE . DS . 'thumbnail' . DS . $type . '_'. self::getThumbnailName($src) . '.jpg'; 65 | } 66 | 67 | public static function getArchiveThumbnail($type, $archive, $pos){ 68 | return self::getFileThumbnail($type, $archive->getFileName() . '_' . $pos); 69 | } 70 | 71 | public static function getThumbnailName($src){ 72 | return substr(md5($src), 0, 24); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/shells/buildasset.php: -------------------------------------------------------------------------------- 1 | pack(JS . DS . $v, 'js', false):file_get_contents(JS . DS . $v); 43 | } 44 | 45 | $js_file = 'pack_' . $this->_hash($js_out) . '.js'; 46 | file_put_contents(JS . DS . $js_file, $js_out); 47 | self::line('done'); 48 | /* handle js end */ 49 | 50 | /* handle css */ 51 | self::line('build css......', false); 52 | $css = array('common.css' 53 | ,'jquery-ui-1.8.20.css' 54 | ,'jplayer.blue.monday.css' 55 | ,'ansi.css' 56 | ,'ubb.css' 57 | ,'keyboard.css' 58 | ); 59 | foreach($css as $v){ 60 | $css_out .= $css_pack?$p->pack(CSS . DS . $v, 'css', false):file_get_contents(CSS . DS . $v); 61 | } 62 | $css_file = 'pack_' . $this->_hash($css_out) . '.css'; 63 | file_put_contents(CSS . DS . $css_file, $css_out); 64 | self::line('done'); 65 | /* handle css end */ 66 | 67 | $asset = array('js' => $js_file, 'css'=> $css_file); 68 | nforum_cache_write('asset_pack', $asset); 69 | } 70 | 71 | private function _hash($content){ 72 | return substr(hash('md5', $content), 0, 10); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/modules/Api/route.php: -------------------------------------------------------------------------------- 1 | 'board', 'module'=>'api', 'action' => null)); 4 | $export[] = array($base . '/threads/:name/:id', array('controller' => 'article', 'module'=>'api', 'action' => 'threads'), array('id' => '\d+')); 5 | $export[] = array($base . '/article/:name/:action/:id', array('controller' => 'article', 'module' => 'api', 'action' => null), array('id' => '\d+')); 6 | $export[] = array($base . '/article/:name/:action', array('controller' => 'article', 'module' => 'api')); 7 | $export[] = array($base . '/attachment/:name/:mode/:id/:pos/:type', array('controller' => 'attachment', 'module'=>'api', 'action'=>'download', 'mode' => null, 'type' => null), array('name' => '\w+', 'id' => '\d+', 'pos' => '\d+', 'mode' => '\d+', 'type' => '\w[\w\d-]*')); 8 | $export[] = array($base . '/attachment/:name/:action/:id', array('controller' => 'attachment', 'module' => 'api', 'action' => null, 'id' => null), array('id' => '\d+')); 9 | $export[] = array($base . '/user/:action/:id', array('controller' => 'user', 'module' => 'api', 'id' => null), array('id' => '\w+')); 10 | $export[] = array($base . '/section', array('controller' => 'section', 'module'=>'api', 'action' => 'root')); 11 | $export[] = array($base . '/section/:name', array('controller' => 'section', 'module' => 'api', 'action' => 'index')); 12 | $export[] = array($base . '/mail/send', array('controller' => 'mail', 'module' => 'api', 'action' => 'send')); 13 | $export[] = array($base . '/mail/info', array('controller' => 'mail', 'module' => 'api', 'action' => 'info')); 14 | $export[] = array($base . '/mail/:type/:action/:num', array('controller' => 'mail', 'module' => 'api', 'action' => null), array('num' => '\d+')); 15 | $export[] = array($base . '/mail/:type', array('controller' => 'mail', 'module' => 'api', 'action' => 'box')); 16 | $export[] = array($base . '/widget/:name', array('controller' => 'widget', 'module' => 'api', 'action' => 'index')); 17 | $export[] = array($base . '/search/:action', array('controller' => 'search', 'module' => 'api')); 18 | $export[] = array($base . '/favorite/:action/:num', array('controller' => 'favorite', 'module' => 'api', 'action' => null), array('num' => '\d+')); 19 | $export[] = array($base . '/refer/:type/:action/:index', array('controller' => 'refer', 'module' => 'api', 'action' => null, 'index' => null), array('index' => '\d+')); 20 | $export[] = array($base . '/vote/:action/:id', array('controller' => 'vote', 'module' => 'api', 'action' => null), array('id' => '\w+')); 21 | $export[] = array($base . '/blacklist/:action', array('controller' => 'blacklist', 'module' => 'api', 'action' => null)); 22 | $export[] = array($base . '/*', array('controller' => 'error', 'module' => 'api', 'action' => 'error'), array(), false); 23 | -------------------------------------------------------------------------------- /app/plugins/Redirect.php: -------------------------------------------------------------------------------- 1 | getModuleName() || 'Api' === $request->getModuleName()){ 13 | if($request->isXmlHttpRequest()) 14 | nforum_error404(true); 15 | else 16 | return; 17 | } 18 | 19 | //check ajax_* action via xhr in header 20 | if(0 === strpos($request->getActionName(), 'ajax_')){ 21 | $request->html = false; 22 | if(!$request->isXmlHttpRequest() && c('ajax.check') && $request->getPost('emulate_ajax') != 'true') 23 | nforum_error404(true); 24 | }else if($request->spider){ 25 | //this is a cheat for spider to access default page when spider visit '/' 26 | if('forum' === strtolower($request->getControllerName()) 27 | && 'front' === strtolower($request->getActionName())) 28 | $request->setActionName('index'); 29 | }else{ 30 | //normal 31 | $r = self::isRedirect($request); 32 | $ajax = $request->isXmlHttpRequest(); 33 | 34 | //should redirect but no ajax,go front 35 | if($r && !$ajax){ 36 | $url = '/#!' . substr($request->url, 1); 37 | $query = $request->getQuery(); 38 | if(!empty($query)){ 39 | foreach($query as $k => &$v) 40 | $v = $k . '=' . $v; 41 | $url .= '?' . join('&', $query); 42 | } 43 | nforum_redirect($request->getBaseUri() . $url); 44 | } 45 | 46 | //should not redirect but stop, 47 | if(!$r && $ajax) exit(); 48 | } 49 | } 50 | 51 | public static function isRedirect($request){ 52 | $acl = array(); 53 | load(CONF . DS . 'redirectacl', $acl); 54 | 55 | $m = strtolower($request->getModuleName()); 56 | $c = strtolower($request->getControllerName()); 57 | $a = strtolower($request->getActionName()); 58 | $r = true; 59 | if('index' !== $m){ 60 | if(isset($acl[$m])){ 61 | if(false === $acl[$m]) 62 | $r = false; 63 | $acl = $acl[$m]; 64 | }else{ 65 | $acl = array(); 66 | } 67 | } 68 | if($r && isset($acl[$c])){ 69 | if(false === $acl[$c]) 70 | $r = false; 71 | else if(isset($acl[$c][$a]) && false === $acl[$c][$a]) 72 | $r = false; 73 | } 74 | return $r; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /lib/inc/json.php: -------------------------------------------------------------------------------- 1 | 0x81){ 24 | if($i === $l - 1) break; 25 | if(ord($var[$i+1]) < 0x40){ 26 | $i++; 27 | continue; 28 | } 29 | $o .= $var[$i] . $var[$i+1]; 30 | $i += 2; 31 | }else if($var[$i] === "\\" &&( 32 | ($i >= 2 && ord($var[$i - 2]) >= 0x81 && ord($var[$i - 1]) >= 0x40) 33 | || ($i >= 1 && ord($var[$i - 1]) >= 0x1 && ord($var[$i - 1]) <= 0x7e) 34 | || $i === 0)){ 35 | $o .= "\\" . $var[$i++]; 36 | }else if($var[$i] === "\""){ 37 | $o .= '\"'; 38 | $i++; 39 | }else if($var[$i] === "\n"){ 40 | $o .= '\n'; 41 | $i++; 42 | }else if($var[$i] === "\r"){ 43 | $o .= '\r'; 44 | $i++; 45 | }else if($var[$i] === "\t"){ 46 | $o .= '\t'; 47 | $i++; 48 | }else if(ord($var[$i]) === 0x8){ 49 | $o .= '\b'; 50 | $i++; 51 | }else if(ord($var[$i]) <= 0x1f){ 52 | $o .= ('\u00' . bin2hex($var[$i])); 53 | $i++; 54 | }else{ 55 | $o .= $var[$i++]; 56 | } 57 | } 58 | return '"' . $o . '"'; 59 | 60 | case 'array': 61 | if (is_array($var) && count($var) && (array_keys($var) !== range(0, count($var) - 1))) { 62 | $prop= array_map(array("self", "_name_value"), array_keys($var), array_values($var)); 63 | return '{' . join(',', $prop) . '}'; 64 | } 65 | $element = array_map(array("self", "encode"), $var); 66 | return '[' . join(',', $element) . ']'; 67 | 68 | case 'object': 69 | $vars = get_object_vars($var); 70 | $prop= array_map(array("self", '_name_value'), array_keys($vars), array_values($vars)); 71 | return '{' . join(',', $prop) . '}'; 72 | } 73 | } 74 | 75 | private static function _name_value($name, $value){ 76 | return self::encode(strval($name)) . ':' . self::encode($value); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /sql/common.sql: -------------------------------------------------------------------------------- 1 | -- MySQL dump 10.11 2 | -- 3 | -- Host: localhost Database: bbs 4 | -- ------------------------------------------------------ 5 | -- Server version 5.0.86-log 6 | 7 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 8 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 9 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 10 | /*!40101 SET NAMES utf8 */; 11 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 12 | /*!40103 SET TIME_ZONE='+00:00' */; 13 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 14 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 15 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 16 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 17 | 18 | -- 19 | -- Table structure for table `widget` 20 | -- 21 | 22 | DROP TABLE IF EXISTS `widget`; 23 | /*!40101 SET @saved_cs_client = @@character_set_client */; 24 | /*!40101 SET character_set_client = utf8 */; 25 | CREATE TABLE `widget` ( 26 | `id` int(11) unsigned NOT NULL auto_increment, 27 | `uid` varchar(15) NOT NULL, 28 | `wid` varchar(40) NOT NULL, 29 | `title` varchar(30) NOT NULL, 30 | `color` tinyint(4) NOT NULL, 31 | `col` tinyint(4) unsigned NOT NULL, 32 | `row` smallint(6) unsigned NOT NULL, 33 | PRIMARY KEY (`id`), 34 | KEY `uid` (`uid`), 35 | KEY `uid_2` (`uid`,`wid`), 36 | KEY `uid_3` (`uid`,`col`,`row`) 37 | ) ENGINE=MyISAM DEFAULT CHARSET=gbk; 38 | /*!40101 SET character_set_client = @saved_cs_client */; 39 | 40 | -- 41 | -- Table structure for table `adv` 42 | -- 43 | 44 | DROP TABLE IF EXISTS `adv`; 45 | /*!40101 SET @saved_cs_client = @@character_set_client */; 46 | /*!40101 SET character_set_client = utf8 */; 47 | CREATE TABLE `adv` ( 48 | `aid` int(11) unsigned NOT NULL auto_increment, 49 | `type` tinyint(4) NOT NULL COMMENT '1进站,2banner,3进站图标,4左边banner', 50 | `file` varchar(30) NOT NULL, 51 | `url` varchar(100) NOT NULL, 52 | `sTime` date NOT NULL COMMENT 'banner开始时间', 53 | `eTime` date NOT NULL COMMENT 'banner结束时间', 54 | `switch` tinyint(4) NOT NULL default '1' COMMENT '小图标开关', 55 | `weight` tinyint(4) NOT NULL default '1' COMMENT 'type为3,4的顺序', 56 | `privilege` tinyint(4) NOT NULL default '0' COMMENT 'banner特权显示', 57 | `home` tinyint(4) NOT NULL default '0' COMMENT '首页可见', 58 | `remark` varchar(50) NOT NULL COMMENT '备注', 59 | PRIMARY KEY (`aid`), 60 | KEY `type` (`type`,`switch`), 61 | KEY `type_2` (`type`,`privilege`,`home`) 62 | ) ENGINE=MyISAM DEFAULT CHARSET=gbk; 63 | /*!40101 SET character_set_client = @saved_cs_client */; 64 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 65 | 66 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 67 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 68 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 69 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 70 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 71 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 72 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 73 | 74 | -- Dump completed on 2010-12-28 23:07:49 75 | -------------------------------------------------------------------------------- /conf/route.php: -------------------------------------------------------------------------------- 1 | 'forum', 'action' => 'front')); 5 | $export[] = array(c('site.home'), array('controller' => 'forum', 'action' => 'index')); 6 | $export[] = array('/index', array('controller' => 'forum', 'action' => 'pre')); 7 | $export[] = array('/section/ajax_list', array('controller' => 'section', 'action' => 'ajax_list')); 8 | $export[] = array('/board/:name/:action/:num', array('controller' => 'board', 'action' => null, 'num' => null), array('num' => '\d+')); 9 | $export[] = array('/article/:name/:action/:id', array('controller' => 'article', 'action' => null, 'id' => null), array('id' => '\d+')); 10 | $export[] = array('/att/:name/:mode/:id/:pos/:type', array('controller' => 'attachment', 'action' => 'download', 'mode' => null, 'type' => null), array('id' => '\d+', 'pos' => '\d+', 'mode' => '\d+', 'type' => '[A-Za-z][\w-]*')); 11 | $export[] = array('/att/:name/:action/:id', array('controller' => 'attachment', 'id' => null), array('action' => '[a-z_]+', 'id'=> '\d+')); 12 | $export[] = array('/att/:hash', array('controller' => 'attachment', 'action' => 'download')); 13 | $export[] = array('/refer/:type/:action', array('controller' => 'refer', 'action' => null)); 14 | $export[] = array('/user/query/:id', array('controller' => 'user', 'action' => 'ajax_query')); 15 | $export[] = array('/section/:num', array('controller' => 'section', 'action' => 'index')); 16 | $export[] = array('/mail/send', array('controller' => 'mail', 'action' => 'send')); 17 | $export[] = array('/mail/ajax_preview', array('controller' => 'mail', 'action' => 'ajax_preview')); 18 | $export[] = array('/mail/:type/:action/:num', array('controller' => 'mail', 'action' => null, 'num' => null), array('num'=> '\d+')); 19 | $export[] = array('/s', array('controller' => 'search', 'action' => 'index')); 20 | $export[] = array('/s/:action', array('controller' => 'search')); 21 | $export[] = array('/authimg', array('controller' => 'reg', 'action' => 'authimg')); 22 | $export[] = array('/widget/set', array('controller' => 'widget', 'action' => 'ajax_set')); 23 | $export[] = array('/widget/add', array('controller' => 'widget', 'action' => 'add')); 24 | $export[] = array('/widget/list', array('controller' => 'widget', 'action' => 'ajax_list')); 25 | $export[] = array('/widget/reset', array('controller' => 'widget', 'action' => 'ajax_reset')); 26 | $export[] = array('/widget/:name', array('controller' => 'widget', 'action' => 'ajax_widget')); 27 | $export[] = array('/rss/topten', array('controller' => 'rss', 'action' => 'topten')); 28 | $export[] = array('/rss/:board', array('controller' => 'rss', 'action' => 'board'), array('board' => 'board-[\w-.]+')); 29 | $export[] = array('/rss/:file', array('controller' => 'rss', 'action' => 'classic')); 30 | $export[] = array('/fav/op/:num', array('controller' => 'favor', 'action' => 'ajax_change')); 31 | $export[] = array('/fav/:num', array('controller' => 'favor', 'action' => 'ajax_show')); 32 | $export[] = array('/fav', array('controller' => 'favor', 'action' => 'index')); 33 | $export[] = array('/adv/:action/:type', array('controller' => 'adv', 'action' => null), array('type' => '\d')); 34 | -------------------------------------------------------------------------------- /lib/inc/route.php: -------------------------------------------------------------------------------- 1 | url === $match 10 | */ 11 | 12 | class NF_Route implements Yaf_Route_Interface{ 13 | 14 | private $_key_vars = array('module', 'controller', 'action'); 15 | private $_routes = array(); 16 | private $_match = array(); 17 | private $_verify = array(); 18 | private $_current = null; 19 | private $_var_null = array(); 20 | private $_strict = false; 21 | 22 | public function __construct ($match , $route = array(), $verify = array(), $strict = null){ 23 | $route_add = array(array($match, $route, $verify)); 24 | $var_null = $this->_get_null($route); 25 | foreach($var_null as $v){ 26 | foreach($route_add as $r){ 27 | $new_match = str_replace('/:' . $v, '', $r[0]); 28 | $new_route = $route; 29 | $new_verify = $verify; 30 | if(in_array($v, $this->_key_vars)) 31 | $new_route[$v] = 'index'; 32 | unset($new_verify[$v]); 33 | $route_add[] = array($new_match, $new_route, $new_verify); 34 | } 35 | } 36 | foreach($route_add as $v){ 37 | $this->_match[] = $v[0]; 38 | $this->_verify[] = $v[2]; 39 | $this->_routes[] = new Yaf_Route_Rewrite($v[0], $v[1], $v[2]); 40 | } 41 | 42 | if(null === $strict) 43 | $this->_strict = false === strpos($match, '/:'); 44 | else 45 | $this->_strict = $strict; 46 | } 47 | 48 | public function route($request){ 49 | foreach($this->_routes as $key=>$r){ 50 | if($this->_strict && $this->_match[$key] !== $request->url) continue; 51 | if($r->route($request)){ 52 | $params = $request->getParams(); 53 | foreach($this->_verify[$key] as $k=>$v){ 54 | if(isset($params[$k]) && !preg_match("|^$v$|", $params[$k])){ 55 | foreach(array_keys($params) as $key) $request->setParam($key, null); 56 | continue 2; 57 | } 58 | } 59 | foreach($this->_key_vars as $v){ 60 | if(isset($params[$v])) 61 | call_user_func_array(array($request, 'set' . ucfirst($v) . 'Name'), array($params[$v])); 62 | } 63 | $this->_current = $key; 64 | return true; 65 | } 66 | } 67 | return false; 68 | } 69 | 70 | public function assemble(array $info, array $query = array()){ 71 | $url = $this->_routes[0]->assemble($info, $query); 72 | foreach($this->_var_null as $v){ 73 | $url = str_replace('/:' . $v, '', $url); 74 | } 75 | return $url; 76 | } 77 | 78 | private function _get_null($route){ 79 | $tmp = array(); 80 | foreach($route as $k=>$v){ 81 | if($v === null) $tmp[] = $k; 82 | } 83 | return $this->_var_null = $tmp; 84 | } 85 | } 86 | --------------------------------------------------------------------------------