├── public ├── favicon.ico ├── robots.txt ├── uploads │ └── avatars │ │ └── .gitignore ├── assets │ ├── images │ │ ├── Jcrop.gif │ │ ├── avatar.png │ │ ├── logo.png │ │ ├── logo2.png │ │ ├── captcha.jpg │ │ ├── logo2@2x.png │ │ ├── logo@2x.png │ │ ├── admin_logo.png │ │ ├── logo_mobile.png │ │ ├── recaptcha.png │ │ ├── admin_logo@2x.png │ │ ├── logo_mobile@2x.png │ │ └── jquery.fs.stepper-arrows.png │ └── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 └── .htaccess ├── database ├── seeds │ ├── .gitkeep │ ├── UserSettingsTableSeeder.php │ ├── ContentClassTableSeeder.php │ ├── TasksTableSeeder.php │ └── DatabaseSeeder.php ├── migrations │ ├── .gitkeep │ ├── 2016_11_04_190327_rename_search_id_to_token.php │ ├── 2016_09_06_134433_add_sticky_to_topics_tables.php │ ├── 2017_02_15_193903_add_options_to_settings_table.php │ ├── 2015_03_16_220356_create_session_table.php │ ├── 2017_03_08_160035_create_task_logs_table.php │ ├── 2015_04_17_113600_remove_unique_slug.php │ ├── 2015_03_06_174600_add_last_page.php │ ├── 2015_03_29_145958_add_num_likes_to_posts_table.php │ ├── 2015_02_12_025532_create_permission_role_table.php │ ├── 2015_02_26_133000_add_last_visit_to_users_table.php │ ├── 2015_02_14_220949_add_num_posts_to_topics_table.php │ ├── 2015_04_12_140000_create_conversation_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2015_03_21_114200_add_mybb_captcha.php │ ├── 2015_02_12_025520_create_permissions_table.php │ ├── 2015_03_07_143000_fix_guest_searching.php │ ├── 2015_04_03_143500_remove_role_id_from_users.php │ ├── 2015_03_29_145952_add_num_likes_to_users_table.php │ ├── 2015_02_26_122601_create_confirmations_table.php │ ├── 2015_04_07_132222_add_approved_to_posts_and_topics.php │ ├── 2016_09_03_090659_create_warning_types_table.php │ ├── 2015_02_12_025505_create_roles_table.php │ ├── 2015_03_19_211900_create_poll_votes_table.php │ ├── 2015_04_03_143501_create_role_user_pivot_table.php │ ├── 2015_04_18_172533_add_closed_to_topics_and_forums_tables.php │ ├── 2017_03_05_123720_create_tasks_table.php │ ├── 2015_02_26_153000_soft_delete_to_posts_table.php │ └── 2016_09_03_090139_add_warnings_to_users_table.php └── .gitignore ├── app ├── Handlers │ ├── Events │ │ └── .gitkeep │ └── Commands │ │ └── .gitkeep ├── Traits │ └── .gitignore ├── Events │ └── Event.php ├── Commands │ └── Command.php ├── Moderation │ ├── SourceableInterface.php │ ├── ArrayModerationInterface.php │ ├── Moderations │ │ ├── CloseableInterface.php │ │ ├── StickableInterface.php │ │ └── ApprovableInterface.php │ ├── DestinedInterface.php │ ├── ReversibleModerationInterface.php │ └── ModerationInterface.php ├── Database │ ├── Repositories │ │ ├── RepositoryInterface.php │ │ ├── RoleRepositoryInterface.php │ │ ├── ModerationLogRepositoryInterface.php │ │ ├── SearchRepositoryInterface.php │ │ ├── ProfileFieldOptionRepositoryInterface.php │ │ ├── ModerationLogSubjectRepositoryInterface.php │ │ ├── ProfileFieldGroupRepositoryInterface.php │ │ └── ProfileFieldRepositoryInterface.php │ └── Models │ │ ├── ModerationLogSubject.php │ │ ├── Permission.php │ │ ├── Task.php │ │ ├── WarningType.php │ │ ├── Role.php │ │ ├── ProfileFieldOption.php │ │ └── TaskLog.php ├── Registry │ └── RegistryInterface.php ├── Http │ ├── Controllers │ │ ├── Admin │ │ │ ├── AdminController.php │ │ │ └── DashboardController.php │ │ ├── Auth │ │ │ └── ResetPasswordController.php │ │ └── ScheduleManagerController.php │ ├── Requests │ │ ├── AbstractRequest.php │ │ ├── Moderation │ │ │ └── ReversibleModerationRequest.php │ │ ├── ProfileField │ │ │ ├── SaveProfileFieldOptionRequest.php │ │ │ ├── SaveProfileFieldRequest.php │ │ │ └── SaveProfileFieldGroupRequest.php │ │ ├── Warnings │ │ │ ├── AckWithWarnRequest.php │ │ │ └── RevokeWarnRequest.php │ │ ├── Account │ │ │ ├── UpdatePasswordRequest.php │ │ │ ├── UpdateAvatarRequest.php │ │ │ ├── UpdateEmailRequest.php │ │ │ ├── UpdateUsernameRequest.php │ │ │ ├── CropAvatarRequest.php │ │ │ └── UpdatePrivacyRequest.php │ │ └── User │ │ │ ├── CreateRequest.php │ │ │ └── SaveUserRequest.php │ └── Middleware │ │ ├── EncryptCookies.php │ │ ├── VerifyCsrfToken.php │ │ ├── AbstractBootstrapMiddleware.php │ │ └── RedirectIfAuthenticated.php ├── Renderers │ └── Post │ │ └── Quote │ │ ├── QuoteInterface.php │ │ └── Markdown.php ├── Captcha │ └── CaptchaInterface.php ├── Exceptions │ ├── Handler.php │ ├── CaptchaInvalidClassException.php │ ├── PollClosedException.php │ ├── PollNoUndoException.php │ ├── PermissionInvalidContentException.php │ ├── PollAlreadyVotedException.php │ ├── PollNoGuestUndoException.php │ ├── TaskFailedException.php │ ├── WarningsContentInvalidClassException.php │ ├── PermissionImplementInterfaceException.php │ ├── DateInvalidObjectException.php │ ├── ConversationCantSendToSelfException.php │ ├── ConversationAlreadyParticipantException.php │ ├── TaskNotFoundException.php │ ├── PollNotFoundException.php │ ├── PostNotFoundException.php │ ├── UserNotBelongsToThisContentException.php │ ├── UserNotFoundException.php │ ├── ForumNotFoundException.php │ ├── SettingNotFoundException.php │ ├── TopicNotFoundException.php │ ├── WarningNotFoundException.php │ ├── ConversationNotFoundException.php │ └── WarningTypeNotFoundException.php ├── Services │ └── ParserCallbacks.php ├── Warnings │ └── WarnableContentInterface.php ├── Providers │ ├── EventServiceProvider.php │ ├── ConfigServiceProvider.php │ └── BroadcastServiceProvider.php ├── Content │ └── ContentInterface.php ├── Permissions │ ├── Traits │ │ └── PermissionableTrait.php │ └── Interfaces │ │ ├── PermissionInterface.php │ │ └── InheritPermissionInterface.php ├── Tasking │ ├── AbstractTask.php │ └── ServiceProvider.php ├── Repository │ ├── RepositoryServiceProvider.php │ ├── RepositoryFactory.php │ └── RepositoryRegistry.php ├── Widgets │ └── WidgetInterface.php ├── Console │ └── Commands │ │ └── stubs │ │ └── task.stub ├── Presenters │ └── Moderations │ │ ├── DeletePostPresenter.php │ │ ├── MergePostsPresenter.php │ │ ├── DeleteTopicPresenter.php │ │ ├── ReversibleModerationPresenterInterface.php │ │ └── ModerationPresenterInterface.php ├── Twig │ └── Extensions │ │ └── Navigation.php ├── Form │ └── RenderableInterface.php └── Transformers │ └── TopicTransformer.php ├── storage ├── .gitignore ├── app │ └── .gitignore ├── debugbar │ └── .gitignore ├── logs │ └── .gitignore └── framework │ ├── cache │ └── .gitignore │ ├── sessions │ └── .gitignore │ ├── views │ ├── twig │ │ └── .gitignore │ └── .gitignore │ └── .gitignore ├── resources ├── assets │ ├── sass │ │ ├── themes │ │ │ └── _module.scss │ │ ├── pages │ │ │ ├── admin │ │ │ │ └── _module.scss │ │ │ └── _module.scss │ │ ├── base │ │ │ ├── _module.scss │ │ │ ├── _settings.scss │ │ │ ├── _typography.scss │ │ │ └── _colors.scss │ │ ├── utils │ │ │ ├── _module.scss │ │ │ └── _helpers.scss │ │ ├── layout │ │ │ ├── _module.scss │ │ │ └── admin │ │ │ │ └── _module.scss │ │ ├── main.rtl.scss │ │ ├── admin.rtl.scss │ │ ├── components │ │ │ ├── admin │ │ │ │ └── _module.scss │ │ │ ├── _module.scss │ │ │ └── _tables.scss │ │ ├── main.scss │ │ ├── admin.scss │ │ └── vendor │ │ │ ├── _spinner.scss │ │ │ ├── _module.scss │ │ │ ├── _passwords.scss │ │ │ └── _dropit.scss │ ├── images │ │ ├── Jcrop.gif │ │ ├── logo.png │ │ ├── logo2.png │ │ ├── avatar.png │ │ ├── captcha.jpg │ │ ├── logo2@2x.png │ │ ├── logo@2x.png │ │ ├── admin_logo.png │ │ ├── recaptcha.png │ │ ├── admin_logo@2x.png │ │ ├── logo_mobile.png │ │ ├── logo_mobile@2x.png │ │ └── jquery.fs.stepper-arrows.png │ ├── typescript │ │ ├── utils.ts │ │ └── mybb.ts │ └── js │ │ └── spinner.js ├── lang │ ├── vendor │ │ └── .gitignore │ ├── rtl │ │ └── general.php │ ├── pr │ │ ├── general.php │ │ ├── account.php │ │ ├── forum.php │ │ ├── pagination.php │ │ ├── member.php │ │ ├── errors.php │ │ ├── topic.php │ │ └── passwords.php │ ├── admin │ │ └── en │ │ │ ├── nav.php │ │ │ └── users.php │ └── en │ │ ├── content.php │ │ ├── post.php │ │ ├── likes.php │ │ ├── pagination.php │ │ ├── forum.php │ │ ├── confirmation.php │ │ └── passwords.php ├── views │ ├── warnings │ │ ├── contents │ │ │ └── post.twig │ │ ├── acknowledge.twig │ │ ├── show.twig │ │ └── warn.twig │ ├── partials │ │ ├── form │ │ │ ├── field_description.twig │ │ │ ├── field_label.twig │ │ │ ├── field_select.twig │ │ │ ├── field_textarea.twig │ │ │ └── field_input.twig │ │ ├── moderation │ │ │ ├── logs │ │ │ │ ├── delete.twig │ │ │ │ ├── close.twig │ │ │ │ ├── merge.twig │ │ │ │ ├── open.twig │ │ │ │ ├── approve.twig │ │ │ │ ├── stick.twig │ │ │ │ ├── unstick.twig │ │ │ │ ├── unapprove.twig │ │ │ │ └── move.twig │ │ │ └── moderation_button.twig │ │ ├── breadcrumbs.twig │ │ └── messages.twig │ ├── emails │ │ └── password.blade.php │ ├── admin │ │ ├── settings │ │ │ └── types │ │ │ │ ├── checkbox.twig │ │ │ │ ├── string.twig │ │ │ │ ├── number.twig │ │ │ │ ├── choose.twig │ │ │ │ ├── multichoose.twig │ │ │ │ ├── radio.twig │ │ │ │ ├── switch.twig │ │ │ │ ├── forumselect.twig │ │ │ │ └── roleselect.twig │ │ ├── dashboard.twig │ │ ├── forums │ │ │ ├── forum-item-select.twig │ │ │ ├── add.twig │ │ │ ├── forum-item.twig │ │ │ ├── edit.twig │ │ │ └── list.twig │ │ ├── partials │ │ │ ├── delete_button.twig │ │ │ └── headerinclude.twig │ │ ├── users │ │ │ ├── add.twig │ │ │ ├── profile_fields │ │ │ │ ├── add.twig │ │ │ │ └── edit.twig │ │ │ ├── edit.twig │ │ │ └── delete.twig │ │ ├── warnings │ │ │ └── warning_types │ │ │ │ ├── add.twig │ │ │ │ └── edit.twig │ │ ├── tools │ │ │ └── tasks │ │ │ │ ├── create.twig │ │ │ │ └── edit.twig │ │ └── header.twig │ ├── captcha │ │ └── mybb.twig │ ├── moderation │ │ ├── dashboard.twig │ │ ├── logs.twig │ │ └── base.twig │ ├── account │ │ ├── buddies.twig │ │ ├── drafts.twig │ │ ├── notifications.twig │ │ ├── following.twig │ │ └── dashboard.twig │ ├── user │ │ └── profile_link.twig │ ├── errors │ │ ├── 403.twig │ │ └── 503.blade.php │ ├── topic │ │ ├── quotebar.twig │ │ └── preview.twig │ ├── vendor │ │ ├── notifications │ │ │ └── email-plain.blade.php │ │ └── pagination │ │ │ ├── simple-default.blade.php │ │ │ └── simple-bootstrap-4.blade.php │ ├── header │ │ └── welcomeblock_guest.twig │ ├── widgets │ │ └── users_online.twig │ ├── search │ │ └── result_posts.twig │ └── conversation │ │ └── preview.twig └── captcha_fonts │ ├── MINYN___.ttf │ ├── edmunds.ttf │ └── read_me.html ├── bootstrap ├── cache │ └── .gitignore └── helpers.php ├── config ├── .gitignore ├── breadcrumbs.php ├── settings.php ├── services.php └── view.php ├── .babelrc ├── phpspec.yml ├── .env.example ├── .travis.yml ├── tests ├── src │ ├── ClassAssertionsTrait.php │ └── FunctionalTestCase.php └── unit │ ├── Tasking │ ├── AbstractTaskTest.php │ └── ScheduleManagerTest.php │ └── Repository │ └── RepositoryRegistryTest.php ├── .editorconfig ├── server.php ├── README.md └── phpcs.xml /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/seeds/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Handlers/Events/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/migrations/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/Handlers/Commands/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /app/Traits/.gitignore: -------------------------------------------------------------------------------- 1 | !.gitignore 2 | -------------------------------------------------------------------------------- /storage/.gitignore: -------------------------------------------------------------------------------- 1 | !.gitignore 2 | -------------------------------------------------------------------------------- /resources/assets/sass/themes/_module.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/assets/sass/pages/admin/_module.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/debugbar/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /config/.gitignore: -------------------------------------------------------------------------------- 1 | parser.php 2 | settings.php 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/uploads/avatars/.gitignore: -------------------------------------------------------------------------------- 1 | !.gitignore 2 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015-rollup"], 3 | } 4 | -------------------------------------------------------------------------------- /resources/lang/vendor/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /resources/views/warnings/contents/post.twig: -------------------------------------------------------------------------------- 1 | {{ content }} 2 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/twig/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | *.php 2 | !.gitignore 3 | !/twig 4 | -------------------------------------------------------------------------------- /public/assets/images/Jcrop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/Jcrop.gif -------------------------------------------------------------------------------- /public/assets/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/avatar.png -------------------------------------------------------------------------------- /public/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo.png -------------------------------------------------------------------------------- /public/assets/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo2.png -------------------------------------------------------------------------------- /config/breadcrumbs.php: -------------------------------------------------------------------------------- 1 | 'partials/breadcrumbs', 6 | 7 | ]; 8 | -------------------------------------------------------------------------------- /public/assets/images/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/captcha.jpg -------------------------------------------------------------------------------- /public/assets/images/logo2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo2@2x.png -------------------------------------------------------------------------------- /public/assets/images/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo@2x.png -------------------------------------------------------------------------------- /resources/assets/images/Jcrop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/Jcrop.gif -------------------------------------------------------------------------------- /resources/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo.png -------------------------------------------------------------------------------- /resources/assets/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo2.png -------------------------------------------------------------------------------- /resources/assets/sass/base/_module.scss: -------------------------------------------------------------------------------- 1 | @import "colors"; 2 | @import "settings"; 3 | @import "typography"; 4 | -------------------------------------------------------------------------------- /resources/assets/sass/utils/_module.scss: -------------------------------------------------------------------------------- 1 | @import "mixins"; 2 | @import "directional"; 3 | @import "helpers"; 4 | -------------------------------------------------------------------------------- /resources/views/partials/form/field_description.twig: -------------------------------------------------------------------------------- 1 |

{{ description }}

2 | -------------------------------------------------------------------------------- /public/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /public/assets/images/admin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/admin_logo.png -------------------------------------------------------------------------------- /public/assets/images/logo_mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo_mobile.png -------------------------------------------------------------------------------- /public/assets/images/recaptcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/recaptcha.png -------------------------------------------------------------------------------- /resources/assets/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/avatar.png -------------------------------------------------------------------------------- /resources/assets/images/captcha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/captcha.jpg -------------------------------------------------------------------------------- /resources/assets/images/logo2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo2@2x.png -------------------------------------------------------------------------------- /resources/assets/images/logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo@2x.png -------------------------------------------------------------------------------- /resources/captcha_fonts/MINYN___.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/captcha_fonts/MINYN___.ttf -------------------------------------------------------------------------------- /resources/captcha_fonts/edmunds.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/captcha_fonts/edmunds.ttf -------------------------------------------------------------------------------- /resources/captcha_fonts/read_me.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/captcha_fonts/read_me.html -------------------------------------------------------------------------------- /resources/views/emails/password.blade.php: -------------------------------------------------------------------------------- 1 | Click here to reset your password: {{ url('password/reset/'.$token) }} 2 | -------------------------------------------------------------------------------- /public/assets/images/admin_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/admin_logo@2x.png -------------------------------------------------------------------------------- /resources/assets/images/admin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/admin_logo.png -------------------------------------------------------------------------------- /resources/assets/images/recaptcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/recaptcha.png -------------------------------------------------------------------------------- /phpspec.yml: -------------------------------------------------------------------------------- 1 | suites: 2 | main: 3 | namespace: MyBB\Core 4 | psr4_prefix: MyBB\Core 5 | src_path: app -------------------------------------------------------------------------------- /public/assets/images/logo_mobile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/logo_mobile@2x.png -------------------------------------------------------------------------------- /resources/assets/images/admin_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/admin_logo@2x.png -------------------------------------------------------------------------------- /resources/assets/images/logo_mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo_mobile.png -------------------------------------------------------------------------------- /resources/assets/sass/base/_settings.scss: -------------------------------------------------------------------------------- 1 | // Breakpoints 2 | $bp-small: 480px; 3 | $bp-medium: 768px; 4 | $bp-large: 1140px; 5 | -------------------------------------------------------------------------------- /resources/assets/sass/layout/_module.scss: -------------------------------------------------------------------------------- 1 | @import "header"; 2 | @import "footer"; 3 | @import "menus"; 4 | @import "page"; 5 | -------------------------------------------------------------------------------- /resources/assets/sass/main.rtl.scss: -------------------------------------------------------------------------------- 1 | html[dir="rtl"] { 2 | direction: rtl; 3 | } 4 | 5 | $dir: rtl; 6 | 7 | @import 'main'; -------------------------------------------------------------------------------- /public/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /public/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /resources/assets/images/logo_mobile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/logo_mobile@2x.png -------------------------------------------------------------------------------- /resources/assets/sass/admin.rtl.scss: -------------------------------------------------------------------------------- 1 | html[dir="rtl"] { 2 | direction: rtl; 3 | } 4 | 5 | $dir: rtl; 6 | 7 | @import 'admin'; -------------------------------------------------------------------------------- /public/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /public/assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /resources/lang/rtl/general.php: -------------------------------------------------------------------------------- 1 | 'RTL Lang Test', 6 | 'direction' => 'rtl', 7 | ]; 8 | -------------------------------------------------------------------------------- /public/assets/images/jquery.fs.stepper-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/public/assets/images/jquery.fs.stepper-arrows.png -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/delete.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.deleted') }} {{ title ?: count ~ ' ' ~ type }} -------------------------------------------------------------------------------- /resources/assets/images/jquery.fs.stepper-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mybb/mybb2/HEAD/resources/assets/images/jquery.fs.stepper-arrows.png -------------------------------------------------------------------------------- /resources/assets/sass/layout/admin/_module.scss: -------------------------------------------------------------------------------- 1 | @import "../page"; 2 | @import "header_footer"; 3 | @import "main"; 4 | @import "menu"; 5 | @import "../menus"; 6 | -------------------------------------------------------------------------------- /resources/assets/sass/components/admin/_module.scss: -------------------------------------------------------------------------------- 1 | @import "../forms"; 2 | @import "../form_fields"; 3 | @import "../buttons"; 4 | @import "../modals"; 5 | @import "../tables"; 6 | -------------------------------------------------------------------------------- /resources/assets/sass/base/_typography.scss: -------------------------------------------------------------------------------- 1 | // Font Stack 2 | $font-stack: Open Sans, Helvetica Neue, Helvetica, Arial; // note: Open Sans is imported in headerinclude.twig template 3 | -------------------------------------------------------------------------------- /resources/views/partials/form/field_label.twig: -------------------------------------------------------------------------------- 1 |

2 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | config.php 2 | routes.php 3 | schedule-* 4 | compiled.php 5 | services.json 6 | events.scanned.php 7 | routes.scanned.php 8 | down 9 | !.gitignore 10 | -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/close.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.closed') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/merge.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.merged') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/open.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.opened') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/approve.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.approved') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/stick.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.sticked') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/unstick.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.unsticked') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/unapprove.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.unapproved') }} {{ title ?: count ~ ' ' ~ type }} in {{ source_title }} -------------------------------------------------------------------------------- /resources/assets/sass/components/_module.scss: -------------------------------------------------------------------------------- 1 | @import "forms"; 2 | @import "form_fields"; 3 | @import "buttons"; 4 | @import "modals"; 5 | @import "tables"; 6 | @import "inline-moderation"; 7 | @import "page_blocks"; 8 | -------------------------------------------------------------------------------- /resources/lang/pr/general.php: -------------------------------------------------------------------------------- 1 | 'Pirate', 6 | 'direction' => 'ltr', 7 | 8 | 'by' => 'by', 9 | 'in' => 'in', 10 | 'reset' => 'Reset', 11 | 12 | ]; 13 | -------------------------------------------------------------------------------- /resources/assets/sass/pages/_module.scss: -------------------------------------------------------------------------------- 1 | @import "forum-list"; 2 | @import "topic-list"; 3 | @import "posts"; 4 | @import "polls"; 5 | @import "user-list"; 6 | @import "profile"; 7 | @import "account"; 8 | @import "conversations"; 9 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/checkbox.twig: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /resources/views/captcha/mybb.twig: -------------------------------------------------------------------------------- 1 |

2 | 3 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_ENV=local 2 | APP_DEBUG=true 3 | APP_KEY=SomeRandomStringWith32Characters 4 | 5 | DB_HOST=localhost 6 | DB_DATABASE=homestead 7 | DB_USERNAME=homestead 8 | DB_PASSWORD=secret 9 | 10 | CACHE_DRIVER=file 11 | SESSION_DRIVER=file 12 | -------------------------------------------------------------------------------- /resources/views/partials/moderation/logs/move.twig: -------------------------------------------------------------------------------- 1 | {{ trans('moderation.log.moved') }} {{ title ?: count ~ ' ' ~ type }} from {{ source_title }} to {{ destination_title }} -------------------------------------------------------------------------------- /resources/views/moderation/dashboard.twig: -------------------------------------------------------------------------------- 1 | {% extends "moderation.base" %} 2 | {% block inner_contents %} 3 | 6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /resources/views/admin/dashboard.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{% endblock %} 3 | {% block contents %} 4 |
5 |

Dashboard

6 |
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /resources/views/partials/form/field_select.twig: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /resources/assets/typescript/utils.ts: -------------------------------------------------------------------------------- 1 | export default class Utils { 2 | public forEach(array, callback, scope) { 3 | for (var i = 0; i < array.length; i++) { 4 | callback.call(scope, i, array[i]); // passes back stuff we need 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /resources/lang/admin/en/nav.php: -------------------------------------------------------------------------------- 1 | 'Users & Roles', 11 | ]; 12 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/string.twig: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/number.twig: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/admin/forums/forum-item-select.twig: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 7.0 5 | 6 | sudo: false 7 | 8 | before_install: 9 | - travis_retry composer self-update 10 | 11 | install: 12 | - composer install --no-interaction --prefer-dist 13 | 14 | script: 15 | - vendor/bin/phpunit 16 | - vendor/bin/phpcs 17 | -------------------------------------------------------------------------------- /app/Events/Event.php: -------------------------------------------------------------------------------- 1 | 0 ? 'minlength=' ~ min_length }} {{ max_length is defined and max_length > min_length ? 'maxlength=' ~ max_length }}>{{ value }} 2 | -------------------------------------------------------------------------------- /resources/views/account/buddies.twig: -------------------------------------------------------------------------------- 1 | {% extends "account.base" %} 2 | {% block inner_title %} 3 | {{ trans('account.buddies') }} 4 | {% endblock %} 5 | {% block inner_contents %} 6 | 9 | {% endblock %} -------------------------------------------------------------------------------- /resources/views/account/drafts.twig: -------------------------------------------------------------------------------- 1 | {% extends "account.base" %} 2 | {% block inner_title %} 3 | {{ trans('account.drafts') }} 4 | {% endblock %} 5 | {% block inner_contents %} 6 | 9 | {% endblock %} -------------------------------------------------------------------------------- /resources/assets/typescript/mybb.ts: -------------------------------------------------------------------------------- 1 | import Cookie from "./cookie"; 2 | import Spinner from "./spinner"; 3 | import Post from "./post"; 4 | 5 | (window).mybb = { 6 | Lang: (window).Lang || {}, // TODO: Make an ES6 module 7 | cookie: new Cookie(), 8 | spinner: new Spinner(), 9 | post: new Post() 10 | }; 11 | -------------------------------------------------------------------------------- /app/Moderation/ArrayModerationInterface.php: -------------------------------------------------------------------------------- 1 | 7 |

{{ trans('account.notifications') }}

8 | 9 | {% endblock %} -------------------------------------------------------------------------------- /resources/views/admin/partials/delete_button.twig: -------------------------------------------------------------------------------- 1 |
2 | {{ csrf_field() }} 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /resources/assets/sass/admin.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * MyBB 2 Admin Control Panel Theme - https://mybb.com - @mybb - MIT license 3 | */ 4 | 5 | @import "utils/module"; 6 | @import "base/module"; 7 | @import "vendor/module"; 8 | @import "components/admin/module"; 9 | @import "layout/admin/module"; 10 | @import "pages/admin/module"; 11 | @import "themes/module"; 12 | -------------------------------------------------------------------------------- /app/Registry/RegistryInterface.php: -------------------------------------------------------------------------------- 1 | 'Post', 11 | 'type.post.plural' => 'Posts', 12 | 'type.topic' => 'Topic', 13 | 'type.topic.plural' => 'Topics', 14 | ]; 15 | -------------------------------------------------------------------------------- /app/Http/Controllers/Admin/AdminController.php: -------------------------------------------------------------------------------- 1 | 2 | {% for option in setting.options|split('|') %} 3 | 6 | {% endfor %} 7 | 8 | -------------------------------------------------------------------------------- /resources/views/partials/form/field_input.twig: -------------------------------------------------------------------------------- 1 | 4 | {{ trans(packageName ~ '::settings.' ~ setting.name ~ '.__option.' ~ option) }} 5 | 6 | {% endfor %} 7 | 8 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes... 9 | RewriteRule ^(.*)/$ /$1 [L,R=301] 10 | 11 | # Handle Front Controller... 12 | RewriteCond %{REQUEST_FILENAME} !-d 13 | RewriteCond %{REQUEST_FILENAME} !-f 14 | RewriteRule ^ index.php [L] 15 | 16 | -------------------------------------------------------------------------------- /bootstrap/helpers.php: -------------------------------------------------------------------------------- 1 | 0 %} 2 | 3 | {% endif %} 4 | {% if includeAvatar %} 5 | {% endif %} 6 | {% if useStyledName %} 7 | {{ user.styled_name|raw }}{% else %} 8 | {{ user.name }}{% endif %} 9 | {% if user.id > 0 %} 10 | {% endif %} 11 | -------------------------------------------------------------------------------- /resources/assets/sass/components/_tables.scss: -------------------------------------------------------------------------------- 1 | .table { 2 | width: 100%; 3 | 4 | &.table--bordered { 5 | border-radius: 5px; 6 | border-collapse: separate; 7 | 8 | td { 9 | border-bottom: 1px solid $border-1; 10 | } 11 | } 12 | 13 | td, th { 14 | padding: 10px; 15 | } 16 | 17 | thead { 18 | background: $primary-color; 19 | color: $invert-font-color; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /resources/views/partials/moderation/moderation_button.twig: -------------------------------------------------------------------------------- 1 | {{ form_open({'route': ['moderate'], 'method': 'post', 'style': 'display: inline-block;'}) }} 2 | {{ form_hidden('moderation_name', moderation.key) }} 3 | {{ form_hidden('moderation_content', content_name) }} 4 | {{ form_hidden('moderation_ids[]', content_id) }} 5 | {{ form_button(moderation.name|capitalize, {'type': 'submit', 'class': 'button icon '~moderation.icon}) }} 6 | {{ form_close() }} 7 | -------------------------------------------------------------------------------- /resources/views/errors/403.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.base" %} 2 | {% block title %} 3 | {{ trans('errors.no_permission') }} 4 | {% endblock %} 5 | {% block contents %} 6 |
7 | 10 |
11 | {{ trans('errors.no_permission_desc') }} 12 |
13 |
14 | {% endblock %} -------------------------------------------------------------------------------- /resources/views/topic/quotebar.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/assets/sass/vendor/_module.scss: -------------------------------------------------------------------------------- 1 | @import "../../../../node_modules/normalize-scss/sass/_normalize"; 2 | @import "../../../../node_modules/font-awesome/scss/font-awesome"; 3 | @import "../../../../node_modules/@claviska/jquery-dropdown/jquery.dropdown.sass"; 4 | @import "../../../../node_modules/datetimepicker/src/DateTimePicker"; 5 | 6 | @import "jcrop"; 7 | @import "passwords"; 8 | @import "spinner"; 9 | @import "stepper"; 10 | @import "tooltips"; 11 | @import "dropit"; 12 | -------------------------------------------------------------------------------- /app/Renderers/Post/Quote/QuoteInterface.php: -------------------------------------------------------------------------------- 1 | 'Ye Port Records', 5 | 'account' => 'Account', 6 | 'dashboard' => 'Ship\'s Wheel', 7 | 'profile' => 'Bunk', 8 | 'notifications' => 'Parrotings', 9 | 'following' => 'Followin\'', 10 | 'buddies' => 'Mateys', 11 | 'preferences' => 'Preferences', 12 | 'privacy' => 'Privacy', 13 | 'drafts' => 'Letters & Seals', 14 | 'messages' => 'Parrots', 15 | 16 | ]; 17 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/radio.twig: -------------------------------------------------------------------------------- 1 | {% for option in setting.options|split('|') %} 2 | 9 | 12 |
13 | {% endfor %} 14 | -------------------------------------------------------------------------------- /resources/lang/pr/forum.php: -------------------------------------------------------------------------------- 1 | 'All Ledgers', 5 | 'notfound' => 'No Ledgers On T\'horizon!!', 6 | 'childforums' => 'Sub Ledgers', 7 | 'topics' => 'Tales', 8 | 'markread' => 'Mark Read', 9 | 'follow' => 'Follow', 10 | 'posttopic' => 'Post Topic', 11 | 'topictitle' => 'Scrawlin\' Name', 12 | 'startdate' => 'Date of Departure', 13 | 'replies' => 'Scrawlin\'s', 14 | 'latestpost' => 'Latest Reply', 15 | 16 | ]; 17 | -------------------------------------------------------------------------------- /tests/src/ClassAssertionsTrait.php: -------------------------------------------------------------------------------- 1 | 'Post liked', 15 | 'like_removed' => 'Post un-liked', 16 | 'likes_for_post' => 'Likes for post #:post_id in topic :topic_title', 17 | 'show_topic' => 'View Topic', 18 | ]; 19 | -------------------------------------------------------------------------------- /resources/lang/en/likes.php: -------------------------------------------------------------------------------- 1 | 'You', 15 | 'sep_comma' => ',', 16 | 'sep_and' => ' and ', 17 | 'others' => 'another|:numOthers others', 18 | 'like_this' => ' like this.', 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/views/admin/forums/add.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %} {{ trans('admin::forums.add_forum') }} {% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::forums.add_forum') }}

6 |
7 |
8 |
9 | {% include "admin.partials.forums.forum_form" %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /resources/views/admin/users/add.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{{ trans('admin::users.add_title') }}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::users.add_title') }}

6 |
7 |
8 | {{ form_open({'route': ['admin.users.add'], 'method': 'post'}) }} 9 | {% include "admin.partials.users.user_form" %} 10 | {{ form_close() }} 11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /app/Database/Models/ModerationLogSubject.php: -------------------------------------------------------------------------------- 1 | 2 | {{ forum.title }} | Level: {{ level }} 3 | 4 | {{ trans('admin::general.edit') }} 5 | {{ admin_delete_button('admin.forums.delete', forum.id) }} 6 | 7 |
8 | {{ forum.description }} 9 |
10 | 11 | -------------------------------------------------------------------------------- /resources/views/admin/warnings/warning_types/add.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::warnings.add_warning_type') }}

6 |
7 |
8 |
9 | {% include "admin.partials.users.warning_type_form" %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /tests/src/FunctionalTestCase.php: -------------------------------------------------------------------------------- 1 | make('Illuminate\Contracts\Console\Kernel')->bootstrap(); 19 | 20 | return $app; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /resources/views/admin/users/profile_fields/add.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::profile_fields.add_field') }}

6 |
7 |
8 | {{ form_open({'route': ['admin.users.profile_fields.add'], 'method': 'post'}) }} 9 | {% include "admin.partials.users.profile_field_form" %} 10 | {{ form_close() }} 11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /resources/views/vendor/notifications/email-plain.blade.php: -------------------------------------------------------------------------------- 1 | 5 |

{{ trans('admin::tasks.create_task') }}

6 | 7 |
8 |
9 | {% include "admin.partials.tools.task_form" %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /app/Captcha/CaptchaInterface.php: -------------------------------------------------------------------------------- 1 | 5 |

{{ trans('admin::tasks.edit') }}

6 | 7 |
8 |
9 | {% include "admin.partials.tools.task_form" with [task] %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /resources/views/admin/users/edit.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{{ trans('admin::users.edit_title') }}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::users.edit_title') }}

6 |
7 |
8 | {{ form_open({'route': ['admin.users.edit', user.id], 'method': 'post'}) }} 9 | {% include "admin.partials.users.user_form" with [user] %} 10 | {{ form_close() }} 11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | 13 | [*.{js,css,sass,scss}] 14 | indent_style = tab 15 | indent_size = 2 16 | 17 | [*.php] 18 | indent_style = space 19 | indent_size = 4 20 | 21 | # Matches the exact files either package.json or .travis.yml 22 | [{package.json,.travis.yml}] 23 | indent_style = space 24 | indent_size = 4 25 | -------------------------------------------------------------------------------- /resources/views/admin/warnings/warning_types/edit.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::warnings.edit_warning_type') }}

6 |
7 |
8 |
9 | {% include "admin.partials.users.warning_type_form" with [warningType] %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /resources/views/admin/forums/edit.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %} {{ trans('admin::forums.edit_forum') }} {% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::forums.edit_forum') }}

6 |
7 |
8 |
9 | {% include "admin.partials.forums.forum_form" with [forum, forums] %} 10 |
11 |
12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | 5 |

{{ trans('admin::forums.management') }}

6 | 7 | 8 |
9 | {{ list_all_forums(forums) }} 10 |
11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /resources/views/partials/breadcrumbs.twig: -------------------------------------------------------------------------------- 1 | {% if breadcrumbs %} 2 | 12 | {% endif %} -------------------------------------------------------------------------------- /resources/views/admin/partials/headerinclude.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {% if trans('general.direction') == 'rtl' %} 7 | 8 | {% else %} 9 | 10 | {% endif %} 11 | -------------------------------------------------------------------------------- /app/Database/Models/Permission.php: -------------------------------------------------------------------------------- 1 | belongsToMany(\MyBB\Core\Database\Models\Role::class); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/Services/ParserCallbacks.php: -------------------------------------------------------------------------------- 1 | topic->slug, $post->topic->id, $post->id]); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Warnings/WarnableContentInterface.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /app/Providers/EventServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 22 | 'EventListener', 23 | ], 24 | ]; 25 | } 26 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | $uri = urldecode( 10 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 11 | ); 12 | 13 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 14 | // built-in PHP web server. This provides a convenient way to test a Laravel 15 | // application without having installed a "real" web server software here. 16 | if ($uri !== '/' and file_exists(__DIR__.'/public'.$uri)) 17 | { 18 | return false; 19 | } 20 | 21 | require_once __DIR__ . '/public/index.php'; 22 | -------------------------------------------------------------------------------- /resources/lang/pr/member.php: -------------------------------------------------------------------------------- 1 | 'Set Sail', 6 | 'logout' => 'Abandon Ship', 7 | 'signup' => 'Join Tha\' Crew', 8 | 'UsernameOrEmail' => 'Pirate Name/Parrot Address', 9 | 'password' => 'Secret Code', 10 | 'forgotpassword' => 'Be forgettin\' yer code?', 11 | 'remember_me' => "Remember me?", 12 | 'invalidCredentials' => 'Yer pirate name and secret code be not matchin!', 13 | 'username' => 'Pirate Name', 14 | 'email' => 'Parrot Address', 15 | 'password_confirm' => 'Type yer code agin.', 16 | 17 | ]; 18 | -------------------------------------------------------------------------------- /resources/views/warnings/acknowledge.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.base" %} 2 | {% block title %} 3 | {{ trans('warnings.warn_user') }} 4 | {% endblock %} 5 | {% block contents %} 6 | 7 |

{{ trans('warnings.ack.information') }}

8 | {% include 'warnings.warn' with {'warn': warn} %} 9 | 10 | 11 |
12 | {{ csrf_field() }} 13 | 14 |
15 | 16 |
17 |
18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MyBB 2 [![Build Status](https://travis-ci.org/mybb/mybb2.svg?branch=master)](https://travis-ci.org/mybb/mybb2) 2 | 3 | This repository holds the source files for MyBB 2, the upcoming major version of MyBB. MyBB is the free and open source, intuitive, extensible, and incredibly powerful forum software you've been looking for. 4 | 5 | MyBB 2 is not yet stable and should **not** be used on live boards in any situation. Support is not provided for MyBB 2 until it is officially released as a stable product and any issues regarding basic support will be closed immediately. If you are not an experienced developer or administrator, this repository is probably not aimed at you. 6 | -------------------------------------------------------------------------------- /app/Content/ContentInterface.php: -------------------------------------------------------------------------------- 1 | hasPages()) 2 | 17 | @endif 18 | -------------------------------------------------------------------------------- /resources/assets/sass/vendor/_passwords.scss: -------------------------------------------------------------------------------- 1 | /* hide/show password */ 2 | ::-ms-reveal, 3 | ::-ms-clear { 4 | display: none !important; 5 | } 6 | 7 | .hideShowPassword-toggle { 8 | background: transparent; 9 | border: 0; 10 | border-radius: 2px; 11 | color: $alt-font-color-2; 12 | cursor: pointer; 13 | font-size: 0.75em; 14 | font-weight: bold; 15 | margin-#{$right}: 2px; 16 | padding: 3px 8px; 17 | text-transform: uppercase; 18 | -moz-appearance: none; 19 | -webkit-appearance: none; 20 | 21 | &:hover, 22 | &:focus { 23 | background-color: $background-3; 24 | color: $alt-font-color-1; 25 | outline: transparent; 26 | } 27 | } -------------------------------------------------------------------------------- /tests/unit/Tasking/AbstractTaskTest.php: -------------------------------------------------------------------------------- 1 | shouldReceive('fire') 15 | ->with($taskModel) 16 | ->andReturnNull(); 17 | } 18 | 19 | public function testIsCommand() 20 | { 21 | $task = Mockery::mock(AbstractTask::class); 22 | static::assertInstanceOf(\Illuminate\Console\Command::class, $task); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Permissions/Traits/PermissionableTrait.php: -------------------------------------------------------------------------------- 1 | getKey(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /resources/views/account/following.twig: -------------------------------------------------------------------------------- 1 | {% extends "account.base" %} 2 | {% block inner_title %} 3 | {{ trans('account.following') }} 4 | {% endblock %} 5 | {% block inner_contents %} 6 | 9 | 14 | {% endblock %} -------------------------------------------------------------------------------- /app/Database/Repositories/RoleRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | 'Yar, an error be encountered when creatin\' that thar scrawlin\'.', 5 | 'error_creating_topic' => 'Yar, an error be encountered when creatin\' that thar tale.', 6 | 'error_deleting_post' => 'Yar, an error be encountered when erasin\' that thar scrawlin\'.', 7 | 'forum_not_found' => 'Me spyglass couldn\'t find that ledger.', 8 | 'post_not_found' => 'Me spyglass couldn\'t find that scrawlin\'', 9 | 'no_permission' => 'Walk the plank!', 10 | 'no_permission_desc' => 'Ye don\'t have keys to this part of the ship, scallywag.' 11 | 'topic_not_found' => 'Me spyglass couldn\'t find that tale.' 12 | ]; 13 | -------------------------------------------------------------------------------- /resources/views/header/welcomeblock_guest.twig: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /app/Database/Repositories/ModerationLogRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | 'required|string|max:255', 30 | ]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /resources/views/warnings/show.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.base" %} 2 | {% block title %} 3 | {{ trans('warnings.warn_user') }} 4 | {% endblock %} 5 | {% block contents %} 6 | 7 | {% include 'warnings.warn' with {'warn': warm} %} 8 | 9 |
10 | {% if not warn.revoked_at and not warn.expired %} 11 |
12 | 13 | {{ csrf_field() }} 14 | 15 | 16 |
17 | {% endif %} 18 | 19 | {% endblock %} 20 | -------------------------------------------------------------------------------- /resources/views/partials/messages.twig: -------------------------------------------------------------------------------- 1 | {% if errors.any %} 2 |
3 |

{{ trans('errors.inline_error') }}

4 |
    5 | {% for error in errors.all %} 6 |
  • {{ error }}
  • 7 | {% endfor %} 8 |
9 |
10 | {% endif %} 11 | 12 | {% if session_has('success') %} 13 |
14 |

{{ session_get('success') }}

15 |
16 | {% endif %} 17 | 18 | {% if session_has('error') %} 19 |
20 |

{{ session_get('error') }}

21 |
22 | {% endif %} 23 | -------------------------------------------------------------------------------- /tests/unit/Tasking/ScheduleManagerTest.php: -------------------------------------------------------------------------------- 1 | '« Previous', 23 | 'next' => 'Next »', 24 | 25 | ]; 26 | -------------------------------------------------------------------------------- /app/Http/Requests/Warnings/AckWithWarnRequest.php: -------------------------------------------------------------------------------- 1 | 'required|integer|exists:warnings,id', 24 | ]; 25 | } 26 | 27 | /** 28 | * @return bool 29 | */ 30 | public function authorize() : bool 31 | { 32 | return true; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Tasking/AbstractTask.php: -------------------------------------------------------------------------------- 1 | commands($this->tasks); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /resources/lang/pr/topic.php: -------------------------------------------------------------------------------- 1 | 'No Tales Spotted!', 5 | 'topics' => 'Tales', 6 | 'replies' => 'Replies', 7 | 'posts' => 'Scrawlin\'s', 8 | 'numreplies' => '{0} No Replies|{1} One Reply|[2,Inf] :count Replies', 9 | 'numviews' => '{0} No Views|{1} One View|[2,Inf] :count Views', 10 | 'numposts' => '{0} No Scrawlin\'s|{1} One Scrawlin|[2,Inf] :count Scrawlin\'s', 11 | 'latest' => 'Latest', 12 | 'create.title' => 'Create New Tale', 13 | 'create.description' => "Create a new tale in yonder ledger '{0}'.", 14 | 'edit' => 'Amend', 15 | 'editpost' => 'Amend Scrawlin\'', 16 | 'delete' => 'Scuttle', 17 | ]; 18 | -------------------------------------------------------------------------------- /app/Database/Models/Task.php: -------------------------------------------------------------------------------- 1 | hasMany(TaskLog::class); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2016_11_04_190327_rename_search_id_to_token.php: -------------------------------------------------------------------------------- 1 | renameColumn('id', 'token'); 17 | }); 18 | } 19 | 20 | /** 21 | * Reverse the migrations. 22 | * 23 | * @return void 24 | */ 25 | public function down() 26 | { 27 | Schema::table('searchlog', function (Blueprint $table) { 28 | $table->renameColumn('token', 'id'); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Permissions/Interfaces/PermissionInterface.php: -------------------------------------------------------------------------------- 1 | boolean('sticky')->default(0)->index(); 17 | }); 18 | } 19 | 20 | /** 21 | * Reverse the migrations. 22 | * 23 | * @return void 24 | */ 25 | public function down() 26 | { 27 | Schema::table('topics', function (Blueprint $table) { 28 | $table->dropColumn('sticky'); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Database/Models/WarningType.php: -------------------------------------------------------------------------------- 1 | 'required|string|max:255', 22 | 'description' => 'required|string|max:255', 23 | ]; 24 | } 25 | 26 | /** 27 | * @return bool 28 | */ 29 | public function authorize() : bool 30 | { 31 | return true; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Repository/RepositoryServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->singleton('MyBB\Core\Repository\RepositoryRegistry', function ($app) { 17 | return new RepositoryRegistry([ 18 | 'post' => 'MyBB\Core\Database\Repositories\PostRepositoryInterface', 19 | 'topic' => 'MyBB\Core\Database\Repositories\TopicRepositoryInterface', 20 | 'forum' => 'MyBB\Core\Database\Repositories\ForumRepositoryInterface', 21 | ]); 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /database/seeds/ContentClassTableSeeder.php: -------------------------------------------------------------------------------- 1 | delete(); 17 | 18 | $classes = [ 19 | [ 20 | 'content' => 'user', 21 | 'class' => 'MyBB\\Core\\Database\\Models\\User', 22 | ], 23 | [ 24 | 'content' => 'forum', 25 | 'class' => 'MyBB\\Core\\Database\\Models\\Forum', 26 | ], 27 | ]; 28 | 29 | DB::table('content_class')->insert($classes); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resources/views/vendor/pagination/simple-bootstrap-4.blade.php: -------------------------------------------------------------------------------- 1 | @if ($paginator->hasPages()) 2 | 17 | @endif 18 | -------------------------------------------------------------------------------- /app/Http/Requests/Warnings/RevokeWarnRequest.php: -------------------------------------------------------------------------------- 1 | 'required|string', 24 | 'id' => 'required|integer|exists:warnings,id', 25 | ]; 26 | } 27 | 28 | /** 29 | * @return bool 30 | */ 31 | public function authorize() : bool 32 | { 33 | return true; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/switch.twig: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | -------------------------------------------------------------------------------- /app/Database/Repositories/SearchRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | 'All Forums', 11 | 'notfound' => 'No forums found', 12 | 'childforums' => 'Child Forums', 13 | 'topics' => 'Topics', 14 | 'markread' => 'Mark Read', 15 | 'follow' => 'Follow', 16 | 'posttopic' => 'Post Topic', 17 | 'topictitle' => 'Topic Title', 18 | 'startdate' => 'Start Date', 19 | 'replies' => 'Replies', 20 | 'latestpost' => 'Latest Post', 21 | 'author' => 'Author', 22 | 'sorttopics' => 'Sort Topics', 23 | 'closedtopic' => 'Closed Topic', 24 | 'stickytopic' => 'Sticky Topic', 25 | 'poll' => 'Topic Contains Poll', 26 | ]; 27 | -------------------------------------------------------------------------------- /app/Exceptions/CaptchaInvalidClassException.php: -------------------------------------------------------------------------------- 1 | message, compact('class')); 28 | 29 | parent::__construct($message, $code, $previous); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Exceptions/PollClosedException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tests/unit/Repository/RepositoryRegistryTest.php: -------------------------------------------------------------------------------- 1 | 'Foo\Bar', 11 | ]); 12 | 13 | static::assertInstanceOf('MyBB\Core\Repository\RepositoryRegistry', $registry); 14 | static::assertInstanceOf('MyBB\Core\Registry\RegistryInterface', $registry); 15 | } 16 | 17 | public function testCanAddRepository() 18 | { 19 | $registry = new RepositoryRegistry(); 20 | $registry->addRepository('foo', 'Foo\Bar'); 21 | 22 | static::assertEquals('Foo\Bar', $registry->get('foo')); 23 | static::assertArrayHasKey('foo', $registry->getAll()); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/Exceptions/PollNoUndoException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/PermissionInvalidContentException.php: -------------------------------------------------------------------------------- 1 | message, compact('class')); 28 | 29 | parent::__construct($message, $code, $previous); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Exceptions/PollAlreadyVotedException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/PollNoGuestUndoException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/TaskFailedException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Providers/ConfigServiceProvider.php: -------------------------------------------------------------------------------- 1 | 2 |

{{ trans('member.online') }} {{ users.count }}

3 |
4 | {% for user in users %} 5 | {{ user.styled_name|raw }} 6 | {% else %} 7 |
{{ trans('member.noOnline') }}
8 | {% endfor %} 9 |
10 | 11 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ResetPasswordController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Exceptions/WarningsContentInvalidClassException.php: -------------------------------------------------------------------------------- 1 | message, compact('class')); 28 | 29 | parent::__construct($message, $code, $previous); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/migrations/2017_02_15_193903_add_options_to_settings_table.php: -------------------------------------------------------------------------------- 1 | string('options')->nullable()->default(null); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('settings', function (Blueprint $table) { 29 | $table->dropColumn('options'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /resources/assets/sass/vendor/_dropit.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * Dropit v1.1.0 3 | * http://dev7studios.com/dropit 4 | * 5 | * Copyright 2012, Dev7studios 6 | * Free to use and abuse under the MIT license. 7 | * http://www.opensource.org/licenses/mit-license.php 8 | */ 9 | 10 | /* These styles assume you are using ul and li */ 11 | .dropit { 12 | list-style: none; 13 | padding: 0; 14 | margin: 0; 15 | 16 | .dropit-trigger { 17 | position: relative; 18 | } 19 | 20 | .dropit-submenu { 21 | position: absolute; 22 | top: 100%; 23 | left: 0; /* dropdown left or right */ 24 | z-index: 1000; 25 | display: none; 26 | min-width: 150px; 27 | list-style: none; 28 | padding: 0; 29 | margin: 0; 30 | } 31 | 32 | .dropit-open .dropit-submenu { 33 | display: block; 34 | } 35 | } -------------------------------------------------------------------------------- /resources/views/admin/header.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | 8 |

9 | 15 |
16 |
17 | {{ Breadcrumbs.renderIfExists() }} 18 |
19 |
20 |
21 |
22 | -------------------------------------------------------------------------------- /resources/views/search/result_posts.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.base" %} 2 | {% block title %} 3 | {{ trans('search.results') }} 4 | {% endblock %} 5 | {% block contents %} 6 |
7 | 10 | {# TODO: we need some mockup for it... #} 11 |
12 | {{ results.render|raw }} 13 | {% for post in results %} 14 |

{{ post.topic.title }}

15 | {{ str_limit(post.content_parsed|striptags, 200) }} 16 |
17 | {% endfor %} 18 | {{ results.render|raw }} 19 |
20 |
21 | {% endblock %} -------------------------------------------------------------------------------- /app/Exceptions/PermissionImplementInterfaceException.php: -------------------------------------------------------------------------------- 1 | message, compact('class')); 28 | 29 | parent::__construct($message, $code, $previous); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | id === (int) $userId; 31 | }); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/views/warnings/warn.twig: -------------------------------------------------------------------------------- 1 | {% if warn.revoked_at %} 2 | Status: Revoked 3 | {% elseif warn.expired %} 4 | Status: Already expired 5 | {% elseif not warn.expires_at %} 6 | Expiration time: never 7 | {% else %} 8 | Expires at {{ format_date(warn.expires_at) }} 9 | {% endif %}
10 | 11 | Warn reason {{ warn.reason }}
12 | 13 | {% if warn.snapshot %} 14 | Inappropriate content {{ warn.formatSnapshot() }}
15 | {% endif %} 16 | 17 | IssuedBy {{ render_profile_link(warn.issued_by()) }}
18 | Created at {{ format_date(warn.created_at) }}
19 | Warn points +{{ warn.points }}
20 | 21 | {% if warn.revoked_at %} 22 | WARN REVOKED
23 | Revoked by: {{ render_profile_link(warn.revoked_by()) }}
24 | Revoked at: {{ format_date(warn.revoked_at) }}
25 | Revoke reason: {{ warn.revoke_reason }}
26 | {% endif %} 27 | -------------------------------------------------------------------------------- /database/migrations/2015_03_16_220356_create_session_table.php: -------------------------------------------------------------------------------- 1 | string('id')->unique(); 24 | $t->text('payload'); 25 | $t->integer('last_activity'); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::drop('sessions'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Exceptions/DateInvalidObjectException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Http/Controllers/Admin/DashboardController.php: -------------------------------------------------------------------------------- 1 | breadcrumbs = $breadcrumbs; 26 | } 27 | 28 | public function index() 29 | { 30 | $this->breadcrumbs->setCurrentRoute('admin.dashboard'); 31 | 32 | return view('admin.dashboard')->withActive("dashboard"); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Http/Requests/Account/UpdatePasswordRequest.php: -------------------------------------------------------------------------------- 1 | 'required|min:6', 27 | 'password' => 'required', 28 | ]; 29 | } 30 | 31 | /** 32 | * @return bool 33 | */ 34 | public function authorize() : bool 35 | { 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2017_03_08_160035_create_task_logs_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->unsignedInteger('task_id'); 19 | $table->text('content'); 20 | $table->timestamp('created_at'); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('task_logs'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/ConversationCantSendToSelfException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Http/Requests/User/CreateRequest.php: -------------------------------------------------------------------------------- 1 | 'required|max:255|unique:users', 24 | 'email' => 'required|email|max:255|unique:users', 25 | 'password' => 'required|confirmed|min:6', 26 | ]; 27 | } 28 | 29 | /** 30 | * @return bool 31 | */ 32 | public function authorize() : bool 33 | { 34 | return true; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /resources/views/errors/503.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 33 | 34 | 35 |
36 |
37 |
Be right back.
38 |
39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /app/Http/Requests/Account/UpdateAvatarRequest.php: -------------------------------------------------------------------------------- 1 | 'image', 28 | ]; 29 | } 30 | 31 | /** 32 | * @return bool 33 | */ 34 | public function authorize() : bool 35 | { 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Http/Requests/Account/UpdateEmailRequest.php: -------------------------------------------------------------------------------- 1 | 'required|email|max:255|unique:users', 27 | 'password' => 'required', 28 | ]; 29 | } 30 | 31 | /** 32 | * @return bool 33 | */ 34 | public function authorize() : bool 35 | { 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Http/Requests/Account/UpdateUsernameRequest.php: -------------------------------------------------------------------------------- 1 | 'required|max:255|unique:users', 27 | 'password' => 'required', 28 | ]; 29 | } 30 | 31 | /** 32 | * @return bool 33 | */ 34 | public function authorize() : bool 35 | { 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Http/Requests/ProfileField/SaveProfileFieldGroupRequest.php: -------------------------------------------------------------------------------- 1 | 'required|string|max:255', 30 | 'slug' => 'required|string|max:255|alpha_dash', 31 | 'description' => 'required|string|max:255', 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /config/settings.php: -------------------------------------------------------------------------------- 1 | 'database', 18 | /** 19 | * The name of the database table containing the settings. 20 | */ 21 | 'settings_table' => 'settings', 22 | /** 23 | * The name of the database table containing the setting values. 24 | */ 25 | 'setting_values_table' => 'setting_values', 26 | /** 27 | * Cache name for settings when caching core settings. 28 | */ 29 | 'settings_cache_name' => 'mybb.core.settings', 30 | ]; 31 | -------------------------------------------------------------------------------- /app/Exceptions/ConversationAlreadyParticipantException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $code, $previous); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/TaskNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/PollNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/PostNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/UserNotBelongsToThisContentException.php: -------------------------------------------------------------------------------- 1 | message, compact('user')); 28 | 29 | parent::__construct($message, $previous, $code); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Exceptions/UserNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Widgets/WidgetInterface.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/SettingNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/TopicNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/lang/en/confirmation.php: -------------------------------------------------------------------------------- 1 | 'Invalid token! Please make sure you copied the complete link', 12 | 'subject' => 'Confimation email for MyBB 2.0', 13 | 'message' => 'Please confirm your :type and visit the following link: :link', 14 | 15 | 'password_subject' => 'Password confimation email for MyBB 2.0', 16 | 'password_message' => 'Please confirm your password and visit the following link: :link', 17 | 18 | 'email_subject' => 'Email change at MyBB 2.0', 19 | 'email_message' => 'Your email has been changed to :email. You can confirm this change by visiting this link: :link 20 | If you haven\'t requested this change, you should contact the administrator and change your password.', 21 | ]; 22 | -------------------------------------------------------------------------------- /app/Exceptions/WarningNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/views/moderation/logs.twig: -------------------------------------------------------------------------------- 1 | {% extends "moderation.base" %} 2 | {% block inner_contents %} 3 | 6 | 7 | {% if logs is not empty %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for log in logs %} 18 | 19 | 20 | 21 | 22 | 23 | {% endfor %} 24 | 25 |
DescriptionTimeIP Address
{{ log.description | raw }}{{ log.created_at.diffForHumans }}{{ log.ip_address }}
26 | {% endif %} 27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /resources/views/conversation/preview.twig: -------------------------------------------------------------------------------- 1 | {% if preview is not null %} 2 |
3 | 9 |
10 |

11 | {{ preview.message_parsed|raw }} {# HTML is filtered by the parser, so show raw HTML. Only do this if you're 100% sure of your variables! #} 12 |

13 |
14 |
15 | {% endif %} 16 | -------------------------------------------------------------------------------- /app/Exceptions/ConversationNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Exceptions/WarningTypeNotFoundException.php: -------------------------------------------------------------------------------- 1 | message); 29 | } 30 | 31 | parent::__construct($message, $previous, $code); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Configuration for MyBB 2.0 4 | 5 | app 6 | config 7 | database 8 | resources 9 | tests 10 | 11 | tests/report/ 12 | */*.blade.php 13 | 14 | 15 | 16 | 17 | */database/* 18 | */tests/* 19 | 20 | 21 | 22 | */Presenters/* 23 | 24 | 25 | 26 | */database/* 27 | */resources/* 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/Console/Commands/stubs/task.stub: -------------------------------------------------------------------------------- 1 | 'required|integer', 22 | 'h' => 'required|integer', 23 | 'x' => 'required|integer', 24 | 'x2' => 'required|integer', 25 | 'y' => 'required|integer', 26 | 'y2' => 'required|integer', 27 | ]; 28 | } 29 | 30 | /** 31 | * @return bool 32 | */ 33 | public function authorize() : bool 34 | { 35 | return true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2015_04_17_113600_remove_unique_slug.php: -------------------------------------------------------------------------------- 1 | dropUnique('topics_slug_unique'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table('topics', function (Blueprint $table) { 35 | $table->unique('slug'); 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /resources/assets/sass/utils/_helpers.scss: -------------------------------------------------------------------------------- 1 | .icon { 2 | text-decoration: none; 3 | 4 | &:before { 5 | display: inline-block; 6 | font-family: FontAwesome; 7 | font-size: 1em; 8 | text-decoration: none; 9 | font-style: normal; 10 | font-weight: normal; 11 | margin-#{$right}: 8px; 12 | position: relative; 13 | -webkit-font-smoothing:antialiased; 14 | -moz-osx-font-smoothing:grayscale; 15 | } 16 | 17 | &.icon--fw:before { 18 | width: 1.28571429em; 19 | text-align: center; 20 | } 21 | 22 | &.icon--after { 23 | display: inline-block; 24 | 25 | &:before { 26 | float: $right; 27 | margin-#{$right}: 0px; 28 | margin-#{$left}: 8px; 29 | } 30 | } 31 | } 32 | 33 | .hidden { 34 | @include hidden; 35 | } 36 | 37 | .visually-hidden { 38 | @include visually-hidden; 39 | } 40 | -------------------------------------------------------------------------------- /resources/views/admin/users/delete.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{{ trans('admin::users.delete_title') }}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::users.delete_title') }}

6 |
7 |
8 |

Are you sure you want to delete the user "{{ user.name }}"?

9 | {{ form_open({'route': ['admin.users.delete'], 'method': 'post'}) }} 10 | 11 | {{ trans('admin::general.back') }} 12 | 13 | {{ form_close() }} 14 |
15 | {% endblock %} 16 | -------------------------------------------------------------------------------- /app/Presenters/Moderations/DeletePostPresenter.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => '', 19 | 'secret' => '', 20 | ], 21 | 'mandrill' => [ 22 | 'secret' => '', 23 | ], 24 | 'ses' => [ 25 | 'key' => '', 26 | 'secret' => '', 27 | 'region' => 'us-east-1', 28 | ], 29 | 'stripe' => [ 30 | 'model' => 'User', 31 | 'secret' => '', 32 | ], 33 | 34 | ]; 35 | -------------------------------------------------------------------------------- /app/Presenters/Moderations/DeleteTopicPresenter.php: -------------------------------------------------------------------------------- 1 | true]), 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/migrations/2015_03_06_174600_add_last_page.php: -------------------------------------------------------------------------------- 1 | string('last_page')->nullable()->after('last_visit'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table('users', function (Blueprint $table) { 35 | $table->dropColumn('last_page'); 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Database/Models/Role.php: -------------------------------------------------------------------------------- 1 | belongsToMany(\MyBB\Core\Database\Models\User::class); 28 | } 29 | 30 | /** 31 | * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany 32 | */ 33 | public function permissions() 34 | { 35 | return $this->belongsToMany(\MyBB\Core\Database\Models\Permission::class); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2015_03_29_145958_add_num_likes_to_posts_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('num_likes')->default(0); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::table('posts', function (Blueprint $table) { 34 | $table->dropColumn('num_likes'); 35 | }); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2015_02_12_025532_create_permission_role_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 24 | $table->integer('permission_id'); 25 | $table->integer('role_id'); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::drop('permission_role'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2015_02_26_133000_add_last_visit_to_users_table.php: -------------------------------------------------------------------------------- 1 | timestamp('last_visit')->nullable(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table('users', function (Blueprint $table) { 35 | $table->dropColumn('last_visit'); 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Database/Repositories/ProfileFieldOptionRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | integer('num_posts')->unsigned()->default(0); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table('topics', function (Blueprint $table) { 35 | $table->dropColumn('num_posts'); 36 | }); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2015_04_12_140000_create_conversation_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 24 | $table->string('title'); 25 | $table->unsignedInteger('last_message_id')->nullable(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::drop('conversations'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Database/Repositories/ModerationLogSubjectRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 24 | $table->string('token')->index(); 25 | $table->timestamp('created_at')->nullable(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::drop('password_resets'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Form/RenderableInterface.php: -------------------------------------------------------------------------------- 1 | input('user_id'); 23 | 24 | return [ 25 | 'name' => 'required|max:255|unique:users,name,'.$id, 26 | 'email' => 'required|email|max:255|unique:users,email,'.$id, 27 | 'password' => 'confirmed|min:6', 28 | 'usertitle' => 'string', 29 | ]; 30 | } 31 | 32 | /** 33 | * @return bool 34 | */ 35 | public function authorize() : bool 36 | { 37 | return true; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /resources/lang/admin/en/users.php: -------------------------------------------------------------------------------- 1 | 'Users', 11 | 'save_user' => 'Save User', 12 | 'add_user' => 'Add User', 13 | 'add_title' => 'New User', 14 | 'user' => 'User', 15 | 'mail' => 'Email', 16 | 'role' => 'User Role', 17 | 'regdate' => 'Registered', 18 | 'action' => 'Actions', 19 | 'edit' => 'Edit', 20 | 'delete_title' => 'Delete User', 21 | 'delete' => 'Delete', 22 | 'edit_title' => 'Edit User', 23 | 'name' => 'Username', 24 | 'usertitle' => 'User Title', 25 | 'password' => 'Password', 26 | 'password_confirm' => 'Confirm Password', 27 | 'error_creating_user' => 'Sorry, there was an error creating the user', 28 | 'user_create_success' => 'User created successfully!', 29 | ]; 30 | -------------------------------------------------------------------------------- /resources/views/topic/preview.twig: -------------------------------------------------------------------------------- 1 | {% if preview is not null %} 2 |

{{ trans('general.preview') }}

3 |
4 | 10 |
11 |

12 | {{ preview.content_parsed|raw }} {# HTML is filtered by the parser, so show raw HTML. Only do this if you're 100% sure of your variables! #} 13 |

14 |
15 |
16 | {% endif %} 17 | -------------------------------------------------------------------------------- /app/Database/Repositories/ProfileFieldGroupRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | string('imagehash', 32)->unique(); 24 | $table->string('imagestring', 8); 25 | $table->timestamp('created_at')->nullable(); 26 | $table->boolean('used')->default(false); 27 | }); 28 | } 29 | 30 | /** 31 | * Reverse the migrations. 32 | * 33 | * @return void 34 | */ 35 | public function down() 36 | { 37 | Schema::drop('captcha'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/ScheduleManagerController.php: -------------------------------------------------------------------------------- 1 | withHeaders([ 23 | 'Content-type' => 'image/gif', 24 | 'Expires' => 'Sat, 1 Jan 2000 01:00:00 GMT', 25 | 'Last-Modified' => $dateTime->format('D, d M Y H:i:s') . ' GMT', 26 | 'Cache-Control' => 'no-cache, must-revalidate', 27 | 'Pragma' => 'no-cache', 28 | ]); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /database/migrations/2015_02_12_025520_create_permissions_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 24 | $table->string('permission_display')->nullable(); 25 | $table->string('permission_slug'); 26 | $table->nullableTimestamps(); 27 | }); 28 | } 29 | 30 | /** 31 | * Reverse the migrations. 32 | * 33 | * @return void 34 | */ 35 | public function down() 36 | { 37 | Schema::drop('permissions'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Presenters/Moderations/ReversibleModerationPresenterInterface.php: -------------------------------------------------------------------------------- 1 | delete(); 17 | $tasksNamespace = 'MyBB\\Core\\Tasking\\Tasks\\'; 18 | 19 | $tasks = [ 20 | [ 21 | 'namespace' => $tasksNamespace . 'LogPruningTask', 22 | 'frequency' => '0 0 * * *', // Every day at 00:00 23 | 'name' => 'admin::tasks.tasks.log_pruning', 24 | 'desc' => 'admin::tasks.tasks.log_pruning_desc', 25 | 'last_run' => time(), 26 | 'next_run' => time(), 27 | 'enabled' => 1, 28 | 'logging' => 1, 29 | ], 30 | ]; 31 | 32 | DB::table('tasks')->insert($tasks); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Database/Models/ProfileFieldOption.php: -------------------------------------------------------------------------------- 1 | name; 38 | } 39 | 40 | /** 41 | * @return string 42 | */ 43 | public function getValue() : string 44 | { 45 | return $this->value; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/Permissions/Interfaces/InheritPermissionInterface.php: -------------------------------------------------------------------------------- 1 | integer('user_id')->unsigned()->nullable()->change(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::table('searchlog', function (Blueprint $table) { 36 | $table->integer('user_id')->unsigned()->change(); 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Renderers/Post/Quote/Markdown.php: -------------------------------------------------------------------------------- 1 | app = $app; 27 | } 28 | 29 | /** 30 | * @param Post $post 31 | * 32 | * @return string 33 | */ 34 | public function renderFromPost(Post $post) : string 35 | { 36 | $post = $this->app->make('MyBB\\Core\\Presenters\\PostPresenter', [$post]); 37 | $message = $post->content; 38 | 39 | // TODO: MarkdownQuoteRenderer 40 | return "> {$message}\n\n"; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Presenters/Moderations/ModerationPresenterInterface.php: -------------------------------------------------------------------------------- 1 | "Ye secret code must be at least six characters and match the confirmation.", 17 | "user" => "No pirate found with that parrot address!", 18 | "token" => "This password reset token is invalid.", 19 | "sent" => "A parrot with a note for resettin\' yer code has been flown.", 20 | "reset" => "Ye secret code has been reset!", 21 | "resetpw" => "Reset ye secret code", 22 | "email_subject" => "Ye secret code reset link", 23 | 24 | ]; 25 | -------------------------------------------------------------------------------- /app/Repository/RepositoryFactory.php: -------------------------------------------------------------------------------- 1 | registry = $registry; 27 | $this->application = $application; 28 | } 29 | 30 | /** 31 | * @param string $key 32 | * 33 | * @return RepositoryInterface 34 | */ 35 | public function build(string $key = null) 36 | { 37 | $class = $this->registry->get($key); 38 | if ($class) { 39 | return $this->application->make($class); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /database/migrations/2015_04_03_143500_remove_role_id_from_users.php: -------------------------------------------------------------------------------- 1 | dropColumn('role_id'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::table('users', function (Blueprint $table) { 35 | // The original column wasn't nullable but to avoid issues with existing users we need to make it nullable 36 | $table->integer('role_id')->nullable(); 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Database/Models/TaskLog.php: -------------------------------------------------------------------------------- 1 | created_at = $model->freshTimestamp(); 39 | }); 40 | } 41 | 42 | /** 43 | * Get the task record associated with the log. 44 | */ 45 | public function task() 46 | { 47 | return $this->belongsTo(Task::class, 'task_id', 'id'); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/Http/Middleware/AbstractBootstrapMiddleware.php: -------------------------------------------------------------------------------- 1 | getRoutes(); 36 | $route = $collection->match($request->create($request->path(), $request->method())); 37 | 38 | return $route->getAction(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2015_03_29_145952_add_num_likes_to_users_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('num_likes_made')->default(0); 25 | } 26 | ); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::table( 37 | 'users', 38 | function (Blueprint $table) { 39 | $table->dropColumn('num_likes_made'); 40 | } 41 | ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /resources/assets/sass/base/_colors.scss: -------------------------------------------------------------------------------- 1 | // Theme colors 2 | $primary-color: #007fd0; 3 | $secondary-color: #ff7500; 4 | 5 | 6 | // Font colors 7 | $font-color: #222; 8 | $invert-font-color: #fff; 9 | $alt-font-color-1: #666; 10 | $alt-font-color-2: #999; 11 | $alt-font-color-3: #ccc; 12 | $alt-font-color-4: #444; 13 | 14 | 15 | // Border colors 16 | $border-1: #dfdfdf; 17 | $border-2: #ccc; 18 | $border-3: #e3e3e3; 19 | $dark-border-1: #222; 20 | $primary-color-border: #0a539b; 21 | 22 | 23 | // Background colors 24 | $background-default: #fff; 25 | $background-1: #f7f7f7; 26 | $background-2: #f2f2f2; 27 | $background-3: #eee; 28 | $background-4: #ccc; 29 | $dark-background-1: #333; 30 | $dark-background-2: #444; 31 | $unread-count: #eb5257; 32 | 33 | 34 | // Status background & border colors 35 | $status-highlight: #ebf4fb; 36 | $status-highlight-border: #afd9fa; 37 | $status-deleted: #ece3fa; 38 | $status-deleted-border: #ddcafa; 39 | $status-pending: #f2dede; 40 | $status-pending-border: #f2aaab; 41 | 42 | 43 | // Success / danger colors 44 | $success-color: #68c000; 45 | $danger-color: #eb5257; 46 | -------------------------------------------------------------------------------- /app/Repository/RepositoryRegistry.php: -------------------------------------------------------------------------------- 1 | repositories = $repositories; 20 | } 21 | 22 | /** 23 | * @param string $key 24 | * @param string $className 25 | */ 26 | public function addRepository(string $key, string $className) 27 | { 28 | $this->repositories[$key] = $className; 29 | } 30 | 31 | /** 32 | * @param string|null $key 33 | * 34 | * @return string 35 | */ 36 | public function get(string $key = null) 37 | { 38 | return $this->repositories[$key]; 39 | } 40 | 41 | /** 42 | * @return string[] 43 | */ 44 | public function getAll() 45 | { 46 | return $this->repositories; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | realpath(base_path('resources/views')) 18 | ], 19 | /* 20 | |-------------------------------------------------------------------------- 21 | | Compiled View Path 22 | |-------------------------------------------------------------------------- 23 | | 24 | | This option determines where all the compiled Blade templates will be 25 | | stored for your application. Typically, this is within the storage 26 | | directory. However, as usual, you are free to change this value. 27 | | 28 | */ 29 | 30 | 'compiled' => realpath(storage_path() . '/framework/views'), 31 | 32 | ]; 33 | -------------------------------------------------------------------------------- /database/migrations/2015_02_26_122601_create_confirmations_table.php: -------------------------------------------------------------------------------- 1 | string('token', 16)->unique(); 24 | $table->string('type'); 25 | $table->integer('user_id')->unsigned(); 26 | $table->string('newData')->nullable(); 27 | 28 | $table->foreign('user_id')->references('id')->on('users'); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::drop('confirmations'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2015_04_07_132222_add_approved_to_posts_and_topics.php: -------------------------------------------------------------------------------- 1 | boolean('approved')->default(1)->index(); 17 | }); 18 | 19 | Schema::table('posts', function (Blueprint $table) { 20 | $table->boolean('approved')->default(1)->index(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::table('topics', function (Blueprint $table) { 32 | $table->dropColumn('approved'); 33 | }); 34 | 35 | Schema::table('posts', function (Blueprint $table) { 36 | $table->dropColumn('approved'); 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /database/migrations/2016_09_03_090659_create_warning_types_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 23 | $table->string('reason'); 24 | $table->integer('points'); 25 | $table->integer('expiration_multiple'); 26 | $table->string('expiration_type'); 27 | $table->tinyInteger('must_acknowledge'); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::drop('warning_types'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2015_02_12_025505_create_roles_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 24 | $table->string('role_display_name'); 25 | $table->string('role_description')->nullable(); 26 | $table->string('role_slug'); 27 | $table->string('role_username_style')->default(':user'); 28 | $table->nullableTimestamps(); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::drop('roles'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /resources/views/moderation/base.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.base" %} 2 | {% block title %} 3 | {{ trans('moderation.control_panel_title') }} 4 | {% endblock %} 5 | {% block contents %} 6 | 14 |
15 | {% block inner_contents %}{% endblock %} 16 |
17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /resources/views/account/dashboard.twig: -------------------------------------------------------------------------------- 1 | {% extends "account.base" %} 2 | {% block inner_title %} 3 | {{ trans('account.dashboard') }} 4 | {% endblock %} 5 | {% block inner_contents %} 6 | 9 | 22 | {% endblock %} -------------------------------------------------------------------------------- /database/migrations/2015_03_19_211900_create_poll_votes_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 24 | $table->unsignedInteger('poll_id'); 25 | $table->unsignedInteger('user_id')->nullable(); 26 | $table->string('vote'); 27 | $table->nullableTimestamps(); 28 | 29 | $table->foreign('poll_id')->references('id')->on('polls'); 30 | }); 31 | } 32 | 33 | /** 34 | * Reverse the migrations. 35 | * 36 | * @return void 37 | */ 38 | public function down() 39 | { 40 | Schema::drop('poll_votes'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Http/Requests/Account/UpdatePrivacyRequest.php: -------------------------------------------------------------------------------- 1 | 'boolean', 22 | 'receive_messages' => 'boolean', 23 | 'block_blocked_messages' => 'boolean', 24 | 'hide_blocked_posts' => 'boolean', 25 | 'only_buddy_messages' => 'boolean', 26 | 'receive_email' => 'boolean', 27 | 'dob_privacy' => 'required|in:0,1,2', 28 | 'dob_visibility' => 'required|in:0,1,2', 29 | ]; 30 | } 31 | 32 | /** 33 | * @return bool 34 | */ 35 | public function authorize() : bool 36 | { 37 | return true; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /database/migrations/2015_04_03_143501_create_role_user_pivot_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('user_id'); 24 | $table->unsignedInteger('role_id'); 25 | $table->boolean('is_display')->default(false); 26 | 27 | $table->foreign('user_id')->references('id')->on('users'); 28 | $table->foreign('role_id')->references('id')->on('roles'); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::drop('role_user'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2015_04_18_172533_add_closed_to_topics_and_forums_tables.php: -------------------------------------------------------------------------------- 1 | tinyInteger('closed')->unsigned()->default(0)->index(); 17 | }); 18 | 19 | Schema::table('forums', function (Blueprint $table) { 20 | $table->tinyInteger('closed')->unsigned()->default(0)->index(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::table('topics', function (Blueprint $table) { 32 | $table->dropColumn('closed'); 33 | }); 34 | 35 | Schema::table('forums', function (Blueprint $table) { 36 | $table->dropColumn('closed'); 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Moderation/ModerationInterface.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('namespace'); 19 | $table->string('frequency'); 20 | $table->string('name'); 21 | $table->string('desc'); 22 | $table->unsignedInteger('last_run')->default(0); 23 | $table->unsignedInteger('next_run')->default(0); 24 | $table->boolean('enabled')->default(true); 25 | $table->boolean('logging')->default(true); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('tasks'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/forumselect.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {# todo need some js for showing/hiding select dependends on selected radio #} 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/views/admin/settings/types/roleselect.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {# todo need some js for showing/hiding select dependends on selected radio #} 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/views/admin/users/profile_fields/edit.twig: -------------------------------------------------------------------------------- 1 | {% extends "layouts.admin" %} 2 | {% block title %}{% endblock %} 3 | {% block contents %} 4 |
5 |

{{ trans('admin::profile_fields.edit_field') }}

6 |
7 |
8 | {{ form_open({'route': ['admin.users.profile_fields.edit', field.id], 'method': 'post'}) }} 9 | {% include "admin.partials.users.profile_field_form" with [field] %} 10 | {{ form_close() }} 11 |
12 | 13 |
14 | {{ form_open({'route': ['admin.users.profile_fields.test'], 'method': 'post'}) }} 15 | {{ form_hidden('profile_field_id', field.id) }} 16 | 17 |

{{ trans('admin::profile_fields.edit_preview') }}

18 |
19 |
20 |
21 | {{ form_render_field(field) }} 22 |
23 |
24 |
25 | {{ form_close() }} 26 |
27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /app/Database/Repositories/ProfileFieldRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | softDeletes(); 24 | }); 25 | Schema::table('topics', function (Blueprint $table) { 26 | $table->softDeletes(); 27 | }); 28 | } 29 | 30 | /** 31 | * Reverse the migrations. 32 | * 33 | * @return void 34 | */ 35 | public function down() 36 | { 37 | Schema::table('posts', function (Blueprint $table) { 38 | $table->dropSoftDeletes(); 39 | }); 40 | Schema::table('topics', function (Blueprint $table) { 41 | $table->dropSoftDeletes(); 42 | }); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call('ContentClassTableSeeder'); 25 | 26 | $this->call('UsersTableSeeder'); 27 | $this->call('RolesTableSeeder'); 28 | $this->call('RoleUserTableSeeder'); 29 | $this->call('PermissionsTableSeeder'); 30 | $this->call('PermissionRoleTableSeeder'); 31 | 32 | $this->call('ForumsTableSeeder'); 33 | 34 | $this->call('TopicsTableSeeder'); 35 | $this->call('PostsTableSeeder'); 36 | 37 | $this->call('UserSettingsTableSeeder'); 38 | 39 | $this->call('SettingsTableSeeder'); 40 | $this->call('ProfileFieldsTableSeeder'); 41 | 42 | $this->call('TasksTableSeeder'); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/Transformers/TopicTransformer.php: -------------------------------------------------------------------------------- 1 | $topic->title, 25 | 'slug' => $topic->slug, 26 | 'forum_id' => (int)$topic->forum_id, 27 | 'user_id' => (int)$topic->user_id, 28 | 'first_post_id' => (int)$topic->first_post_id, 29 | 'last_post_id' => (int)$topic->last_post_id, 30 | 'views' => (int)$topic->views, 31 | 'created_at' => (string)$topic->created_at, 32 | 'updated_at' => (string)$topic->updated_at, 33 | 'num_posts' => (int)$topic->num_posts, 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Middleware/RedirectIfAuthenticated.php: -------------------------------------------------------------------------------- 1 | auth = $auth; 33 | } 34 | 35 | /** 36 | * Handle an incoming request. 37 | * 38 | * @param \Illuminate\Http\Request $request 39 | * @param \Closure $next 40 | * 41 | * @return mixed 42 | */ 43 | public function handle($request, Closure $next) 44 | { 45 | if ($this->auth->check()) { 46 | return new RedirectResponse(url('/')); 47 | } 48 | 49 | return $next($request); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /database/migrations/2016_09_03_090139_add_warnings_to_users_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('warn_points')->default(0); 25 | $table->boolean('warned')->default(false); 26 | } 27 | ); 28 | } 29 | 30 | /** 31 | * Reverse the migrations. 32 | * 33 | * @return void 34 | */ 35 | public function down() 36 | { 37 | Schema::table( 38 | 'users', 39 | function (Blueprint $table) { 40 | $table->dropColumn('warn_points'); 41 | $table->dropColumn('warned'); 42 | } 43 | ); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | "Passwords must be at least six characters and match the confirmation.", 23 | "user" => "We can't find a user with that e-mail address.", 24 | "token" => "This password reset token is invalid.", 25 | "sent" => "We have e-mailed your password reset link!", 26 | "reset" => "Your password has been reset!", 27 | "resetpw" => "Reset your password", 28 | "email_subject" => "Your Password Reset Link", 29 | 30 | ]; 31 | --------------------------------------------------------------------------------