Giter Site home page Giter Site logo

mybb / mybb2 Goto Github PK

View Code? Open in Web Editor NEW
110.0 110.0 45.0 9.44 MB

The repository for the MyBB 2 forum software. Not to be used on live boards.

Home Page: https://www.mybb.com

License: BSD 3-Clause "New" or "Revised" License

PHP 37.73% CSS 18.09% JavaScript 32.45% HTML 11.44% TypeScript 0.29%

mybb2's Introduction

MyBB

MyBB is a free and open source forum software written in PHP with support for MySQL/PostgreSQL/SQLite, licensed under GNU LGPL v3.

Learn more at MyBB.com โ†’

Download

Go to mybb.com/download to download the latest stable, production-ready version of the MyBB forum software.

Documentation

Go to docs.mybb.com to view articles on usage, administration, and troubleshooting of MyBB.

Extend

Open Extend MyBB to download plugins, themes, translations and other resources to customize your MyBB board.

Support & Discussion

Visit the MyBB Community Forums and join the MyBB Discord server to get support and discuss MyBB. To learn more about support resources, go to mybb.com/support.

Security

View SECURITY.md for information on secure usage, incident recovery, and vulnerability reporting. To learn more about security research at MyBB, go to mybb.com/security.

Get Involved

View CONTRIBUTING.md for information on running MyBB locally, submitting changes, workflow, and best practices for working with the code repository. To learn more about contributing to the MyBB Project, go to mybb.com/get-involved.

Credits

Some icons by Yusuke Kamiyamane.

Sponsors

mybb2's People

Contributors

036 avatar 1e4 avatar atofighi avatar azareal avatar chack1172 avatar destroy666x avatar dvz avatar eric-jackson avatar euantorano avatar jitmaharaj avatar jn-jones avatar jordanmussi avatar joshharmon avatar justinsoltesz avatar matslom avatar pkill37 avatar starpaul20 avatar wpillar avatar xaoseric avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mybb2's Issues

Alpha 1 Moderation

Features

  • Soft delete post
  • Hard delete post
  • Soft delete topic
  • Hard delete topic
  • Close / open topic
  • Approve / unapprove posts
  • Approve / unapprove topics
  • Move posts to existing topic
  • Move topics to other forums
  • Merge posts of the same author
  • Stick / unstick topics
  • Moderation Control Panel
    • Moderation queue
    • Moderation logs

Thoughts on the above and things I've missed?

post/topic delete

  • when you delete a post, the likes of the post should be deleted...
  • when you delete a topic, the poll of the topic should be deleted...

User Mentions

It should be able to mention/tag a user within a post using the familiar @username syntax. Several conventions should be included.

Conventions

  • Usernames containing spaces should be tagged using the following syntax: @[long separated username].
  • Tags should be replaced upon parsing to a link to the user profile, possibly using a custom BBCode such as: [USER=1234]@euantorano[/USER], where 1234 is the user ID of the tagged user.
  • Invalid tags should be left as plain text upon parsing.
  • When tagged in a piece of content they can view, users should receive a notification.

Theme system

There needs to be some kind of system to allow the creation of themes (or styles, not sure what to call them), allowing the installing of themes from third parties with customised CSS<,JavaScript and views.

Custom themes installed on the board should also be user selectable, so these details will have to be loaded fairly early in the application boot process.

Use validation for routes with id

As @wpillar mentioned here: Instead of doing

$el = $this->elRepository->find($id);

if(!$el) {
    throw new ElNotFoundException;
}

in the controller we should add custom request classes to those functions which use the validor: id => exists:elTable

  • ForumController
  • TopicController
  • PostController

JavaScript todo list

  • Modal boxes for login/lost password
  • Modal boxes for report, warn
  • Avatar upload with dropzone.js
  • Avatar crop? http://acornejo.github.io/jquery-cropbox/
  • Quick reply (needs API)
  • Multiupload
  • Multiquote
  • Error notifications for uploads, posts etc (needs API?) (need to decide library?)
  • dropdowns for edit post, etc
  • dropdowns for messages, notifications
  • Usernames should be auticompleted (eg conversations)
  • Poll Ajax voting
  • Like should be Ajax

Add Specific Exceptions

Atm we're throwing Exception or RuntimeException, however correct Exception classes should be added and thrown instead (eg TopicNotFound etc). Note that this issue also applies to our packages.

Guest usernames aren't styled

This check prevents us from changing the style of the guests. Note that we can't attach a role to a guest as attach automatically tries to run a query. Instead either the user model (preverred) or the presenter should get an extra check.

Roles / Groups Discussion

Need a quick response, if we need to keep the old Group term, or adapt the term "Role".

Not a huge change, but I am for the change.

Also I am implementing a different approach to permissions handling, whereby the groups and permissions are stored in separate table rather then together.

Thus

Users -> group_id
Role/Groups -> Group data
Permissions -> Route/Action Permission.

Alpha 1 Warning System

Features

  • Warn a user
  • Warn a user for a particular piece of content (post, topic etc)
  • Configurable presets for warning points and reasons
  • Warn using a preset, or custom reason and points

Rename the "thread" term

Sorry, I have to do a little nitpicking...

Since we're writing everything from scratch, I think now would be a good opportunity to call threads something else. It's a remnant of mailing lists, which forum software evolved from. It's weird to keep using that term. No one else is using it anymore.

I like the term discussion.

Any thoughts?

Profile shows last inserted profile field values for all users

Basically the profile page gets the profilefields like this:

for group in groups
    for field in group
         echo field.name
         echo field.value
    end
end

However the field.value itterates over all values associated with that field and returns the latest (so usually for that user who updated his profile last) instead of getting the correct value for this user.

User Signatures

  • Ability for user to add a signature from their Account page.
  • Signature display at the end of every post the user makes.
  • Parser support.
  • Support for other custom profile fields to be displayed in the signature area of a post.

Alpha 1 Notifications

A notification system to inform users of social interactions should be included.

Features

  • Multiple notification types.
  • Ability to mark notifications as read.
  • Ability to delete old notifications.

XML Sitemap

XML Sitemaps are useful for Search Engine Optimisation (SEO) purposes and would be a valuable addition to the core. Sitemaps should be cached and regenerated on a schedule.

Debugbar saved as last online page

For some reason the middleware also reacts on the debugbar. While this isn't a problem on live system it makes testing the wio a lot harder so it should be ignored.

Usergroup settings

We have user settings, board settings and usergroup permissions so far but no usergroup settings (eg minPostsForPm). There needs to be an easy way to get the correct value for an user, however this is a bit setting related as eg minXyForZ settings should return the lowest value needed and other settings, eg maxXyForZ, should return the highest. It doesn't really fit in the settings package as the settings package shouldn't make use of our role system.

Reporting

Features

  • Report any content (post, topic, message etc) extensions can integrate to use the reporting system for content the extension generates.
  • Integration with Moderation (#45)
    • Report centre

Widget system

A widget system to allow the rendering of content blocks such as Who's Online by calling a simple function.

Features

  • Easy registration of widgets using a WidgetManager.
  • Easy creation of widgets by implementing a base contact MyBBCore\Widgets\AbstractWidget.
  • Rendering of widgets via a Twig function {{ render_widget('widget_name') }}.
  • Widget sections, which contain multiple widgets configureable via the ACP
  • Widget sections automatically render child widgets.

Auto Presenter dependency requires PHP 5.5

The Auto Presenter library requires PHP >5.5 due to it's usage of ::class in tests. As we aim to support PHP >5.4, we will need to either choose an alternative library, or roll our own solution (either by forking the existing library and making it compatible or writing one from scratch).

It would be good to have a discussion about the best approach. The existing one also causes a few issues with the maximum function nesting setting in Debug, so we should probably look at that too.

User Conversation System

Rather than the old Private Messaging system, a system allowing multiple users to have a private conversation should be implemented. Private Conversations should be able to include a number of participants, and provide all the expected features of BBCode/Markdown parsing, quoting, etc.

Support "show online status" setting

The user setting is already saved and as we have permissions now we can also define who is able to see users who disabled the setting so we should make that setting working.

Content Liking

It should be able to "like" certain content around the forums.

Like-able content

It should be easy to extend the like system to allow multiple types of content to be "liked". Within the core, the only content to be "like"-able will be posts.

Implementation

Likes should take the form of a polymorphic relation using Eloquent. This allows for future enhancement and extension.

Additionally, there should be a Trait to provide the ability to "like" another content type.

Search System

@ATofighi already started a search system, but it may be a good idea to extend it a little.

Ideally, the search system should have a concept of an "indexer", used to index content. The default would obviously be the database, but this approach would allow the easy implementation of advanced search systems such as ElasticSearch for Big Boards.

User Activity

A feature to provide a history of user activity, such as posting new posts, liking content, registering, and more.

Features

  • Provide an easy API to add the automatic storing of user activity on content creation/update/delete.
  • Scheduled task to clean out old activity logs older than X days, where X is a configurable option (set to 0 to disable clearing of activity).

Implementation

  • Provide a Trait MyBB\Core\Traits\UserActivityTrait that can be included by Models to automatically enable the storing of activity.

Extension System

Provide an easy system to write extensions to the MyBB 2.0 core.

Features

  • Easy extension of core actions using event subscriptions.
  • Extension of templates, inserting data using template hooks.
  • Adding of assets (CSS, Javascript) to be loaded with extensions.

Discussion Points

  • Ability to bootstrap the creation of a plugin from the Admin Control panel when in Dev Mode.
  • Plugin format:
    • Plugin service providers? (may slow the application boot process)
    • XML file description of plugins, which can be imported via ACP to install plugin?

Add "init" function

We have some general code which should be run on every page, mainly the last visit/page, language and some general view variables. That code is located in Controller::__construct atm which means all controllers need to call the parent constructor and all other classes need to duplicate that code (eg middlewares). Instead we should add that code somewhere where it's been executed on every request (probably as global middleware, or something like that). It should

  • be after laravel is included so view, lang and settings are available
  • extendable as plugins may want to do their own magic
  • be run automatically on every type of request (so controller methods, middleware exceptions and probably even on not found errors (setting language comes to my mind))
  • some parts need to be optional, eg the captcha controller shouldn't be shown as "last page" but some other parts may be used

Subclasses for aliased classes

As @wpillar suggested here: #99 (comment) we should create sub classes for classes we usually alias (like Manager or Repository)

  • DaveJamesMiller\Breadcrumbs\Manager should be subclassed to Breadcrumbs and stored in a sensible namespace.

Scheduled Task System

A system to provide the running of scheduled tasks should be provided. Scheduled tasks should be used to perform actions such as role promotions, email reviews, sitemap generation, and more.

Features

  • Tasks should be ran upon a time based schedule.
  • Tasks should be implemented as classes extending a base MyBB\Core\Tasking\AbstractTask class.
  • Tasks should be able to be ran as a Cron job, or by using a background queue processor, or by using another in-page running mechanism.

Fix `getPresenter()` method on Models

Currently, models use the new PHP 5.5 ::class class name resolution. The core should support PHP 5.4 as a minimum, so these instances should be replaced with the hardcoded fully qualified class name.

Preview post/topic/conversation

All of those three textareas should get a preview button which redirects to the same page with a preview. The postbit shouldn't be shown except the username/avatar part. While posts/topics have a full page editor where we can simply add the post/topic the conversation page only has the quickreply editor. While we could add that IMHO it'd be nicer to show the preview "inline"

Page Management System

A system to allow the creation of additional pages should be provided within the core. This is a commonly used feature within forums that adds a lot of flexibility.

Features

  • Ability to write a page in pure HTML
  • Ability to write a page linked to some Controller action
  • Ability to write a page using the Twig tempting language
  • Role based permissions to view pages

Repository Factory

As already discussed multiple times: We need some sort of repository factory to avoid that one repository relies on another (which can lead to endless loops)

Registration Agreement Page

We should provide a basic registration agreement page. Basically we should add two more settings: enable feature and agreement. The sign up page should simply show a check box with a link (opens in a new tab) and the agreement page basically displays what's saved in the setting.

a issue in forceDelete a topic

FatalErrorException in TopicRepository.php line 309:
Call to undefined method Illuminate\Database\Eloquent\Collection::forceDelete()

Avoid using Facades

There are some places where we use Facades, especially the breadcrumb manager is always called via the facade. Instead we should update those cases and inject the class directly.

PHP Error in reply

Argument 4 passed to MyBB\Core\Http\Controllers\TopicController::reply() must be an instance of Illuminate\Http\Request, none given

Parser handles [hr] incorrectly

image

If you create a new post with the following raw content:

Foo[hr]Bar[hr]Bat

It puts the <p> tags in the wrong places and ends up making the Bar and Bat bits larger than Foo. Due to not being wrapped in <p> tags.

Running where on Collections doesn't always work

While debugging issues with the demo board @euantorano and I noticed, that the where functions on collections doesn't work properly. By default it uses strict comparision which results in unexpected results, especially with booleans (mysql returns integer, pgsql boolean etc). While the $cast array helps with direct attributes it doesn't work with pivot data (eg in the displayRole function). Instead the whereLoose function should be used to avoid any issues.

Add captcha support

To avoid bots we need captchas.

Features

  • reCaptcha and NoCaptcha
  • Expendable
  • Easy to use (Twig Function and Validation Rule)
  • Registration and guest posting should show captcha always
  • login attempts?

Discussion

Do we want to support something else? Eg a basic image captcha?

User follow system

A system allowing users to "follow" other users. This system is similar to the Twitter concept of followers and the current buddy system.

Features

  • Activity Feed can be filtered to show only activity from followed users
  • Alternative "Ignore" feature for other users, hiding posts/topics (posts collapsed, toggle switch to temporarily show them).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.