mybb / mybb2 Goto Github PK
View Code? Open in Web Editor NEWThe 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
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
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.
A notification system to inform users of social interactions should be included.
Features
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.
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.
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.
Features
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?
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.
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.
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)
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.
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.
A feature to provide a history of user activity, such as posting new posts, liking content, registering, and more.
Features
X
days, where X
is a configurable option (set to 0
to disable clearing of activity).Implementation
MyBB\Core\Traits\UserActivityTrait
that can be included by Models to automatically enable the storing of activity.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
MyBB\Core\Tasking\AbstractTask
class.@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.
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
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.
To avoid bots we need captchas.
Do we want to support something else? Eg a basic image captcha?
A widget system to allow the rendering of content blocks such as Who's Online
by calling a simple function.
Features
WidgetManager
.MyBBCore\Widgets\AbstractWidget
.{{ render_widget('widget_name') }}
.Argument 4 passed to MyBB\Core\Http\Controllers\TopicController::reply() must be an instance of Illuminate\Http\Request, none given
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.
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.
Provide an easy system to write extensions to the MyBB 2.0 core.
Features
Discussion Points
Dev Mode
.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.
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.
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.
Features
Thoughts on the above and things I've missed?
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.
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
If the profilefield validation fails (eg Twitter) the old input isn't repopulated.
FatalErrorException in TopicRepository.php line 309:
Call to undefined method Illuminate\Database\Eloquent\Collection::forceDelete()
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.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"
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.
I think we should add num_deleted_posts
and num_unapproved_posts
to topics table and
num_deleted_posts
, num_unapproved_posts
, num_deleted_topics
and num_unapproved_topics
to forums table...
You can't enter text in the Bio
profile field
A system allowing users to "follow" other users. This system is similar to the Twitter concept of followers and the current buddy system.
Features
Features
It should be able to mention/tag a user within a post using the familiar @username
syntax. Several conventions should be included.
Conventions
@[long separated username]
.[USER=1234]@euantorano[/USER]
, where 1234
is the user ID of the tagged user.https://github.com/mybb/mybb2/blob/master/app/Database/Repositories/Eloquent/PostRepository.php#L183
post->author
is not defined for guests
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.