Welcome Guest, Not a member yet? Register   Sign In
Developing CI Based Forum - WIP
#1

[eluser]srpurdy[/eluser]
Hello,

I'm currently in the process of building a forum based on Codeigniter + Ion Auth.

I haven't decided yet wither this will be open source or what. but first want to see if the community will latch onto this project, because it WILL get to a point that it is ready for distribution over time. Right now I don't have any actual timeframe for when Version 1 will be ready though. This won't be a project that will get released as half complete with missing core features. I'm really looking to add as much as possible. So that may mean it may be awhile.

The Current State of the project.
-> Built with Ion-Auth with modifications (new session variables for example)
-> Built on HMVC Modular Extensions.
-> Built with Twitter Bootstrap (CSS)
-> Themeable (Complete)
-> Custom Layouts Per Forum Section (IE Full width or Side bar) (COMPLETE) - Could technically have a completely unique design if people wanted to.
-> Custom Widgets Per Forum Section (COMPLETE) - Grouped Together (4 Widget locations)
-> 4 Widget locations - Content Top, Content Bottom, Side Top, Side bottom. These can also easily be moved within the template(s) each location can have an unlimited amount of widgets loaded. These can be actual widgets with the Widget Helper Add-On or content based (HTML) editable within the admin area.
-> Main Categories - COMPLETE
-> Main Forums - COMPLETE
-> Unlimited Sub Forums - COMPLETE
-> Private Forums - COMPLETE (some changes may still be made)
-> Forum/Topic Pagination (MOSTLY COMPLETE) Would like to change the behavior a little. (For example default pagination works weird. if you have 7 pages and only 4 num links. it shows 12345. I need this to display maybe something like 12367.
-> Forum Permissions - COMPLETE (For this phase) more options may be added)
-> User Group Permissions - COMPLETE (For this phase) more options may be added)
-> Permissions include the following
-> Allow Sticky
-> Allow Edit
-> Allow Delete
-> Allow New Topics
-> Allow Replies
-> Allow Attachments
-> Allow BBCode (Although it's not actually checked yet)
-> Allow HTML ( I may actually remove this forced off atm)
-> Both the Forum Permission and Group Permission must be = to 'Y' for the permission to work. IE if the forum section doesn't allow sticky, even if the user group does allow stickys they are still not allowed.
-> Various User Fields. (Likely more will be added) Including Timezone options, ability to disable sigs or avatars per user. This is in case users don't want to see avatars or sigs.
-> BBCODE - Multi quote + nested quotes, code tags doesn't render bbcode or smileys
-> File Attachments (COMPLETE maybe some changes) This has some ajax methods to displaying files that have been uploaded for the post or topic. You can click "insert as image" if the file is an image. This will also wrap the image in a custom bbcode called lytebox which will allow the image to be click-able into lytebox. Auto limitation of image width is also included.
-> Edit Post (Complete)
-> Delete Post (Complete)
-> Statistics - Total Posts, replies etc. (Complete for now (maybe more stats later)


-> Admin Area
-> Add/Edit Categories
-> Add/Edit Forums - Can Set Default User Group Permissions upon creation
-> Add User Group Permissions
-> Manage User Group Permissions (Edit Existing Permissions)

This is all consider as ALPHA at this point. (Version 0.44.2)

This is because I have a much longer list of features which are not currently include.
Like for example topic tracking so you know which topics are new/unread. Subscribing/unsubscribing to topics. Private messages. Moderation, and access to various configuration files from within the admin area. For example changing allowed file types for attachments or avatar image size. So they're is still a lot to do. Although I am pretty happy with the current state of it at this point. Smile

Some later features as well like RSS for each forum section. Share Options for facebook, digg etc for actual topics. I really want to go all out on it. Smile

Below is my current list of features I have planned.
v0.75
====================================
NC - Moderate Interface
NC - Moderate Permissions
NC - Post Approval (based on configuration options)
NC - Admin Options for Giving Moderate Permissions / Board Moderators.
NC - Flag Posts as Spam or Harmful
NC - Topic Tracking (New / Unread Posts)
NC - Search System - Search for Forum Topics/Posts
NC - Smiley Customization
NC - Notify User When Replies are posted in users topic (option)
NC - New User Profile Setting (Notify when replies are made to users topics) (yes or no)
NC - Latest Posts/Topics Widget
NC - Members List

-- Topic Tracking Logic
100 Topics Tracks Per User (Configuration Variable)
-> When Post or Topic is created insert a row for each user up to a max of 100 Topics
-> if a user has 100 topics already tracked remove the oldest one, and replace with the newer topic
-> Allow Users to make all topics as read, which will clear out all tracked topics for that user.
-> Limit Topic Tracking to Active Users (Within a time period) Maybe default 10 days. (If a user is not active within the last 10 days no more tracking will be performed.)

I'm actually up for debate on the topic tracking as this is kind of a give and take feature as it can really bottleneck a forum system. I'm looking for high performance but good useability at the same time. So I think database tracking is how I will go.


V1.00
====================================
NC - Private Messages / Including Attachments
NC - Topic Subscribe/Unsubscribe
NC - Disable PM's If post count is lower than min config value. (Configuration option)
NC - Customizable BBCode Buttons
NC - Social Media Options For Topics. (share with facebook etc)
NC - RSS Feed of Forum Sections
NC - Manage User Attachments
NC - Manage Subscriptions
NC - Users Viewing Forum / Topic


If you want to chime in on the topic and offer some suggestions as well that would be cool too.
#2

[eluser]RaZoR LeGaCy[/eluser]
Looking forward to reading more on this. I did something similar a little while back but did not have the time to make it more robust.
#3

[eluser]Rok Biderman[/eluser]
[quote author="srpurdy" date="1344583341"]I haven't decided yet wither this will be open source or what. but first want to see if the community will latch onto this project[/quote]

For me to see in this anything beyond a solo project, this would have to be a must. I was planning something similar for some time, so this to me looks like a very welcome project. I'm loath to do it on my own, and I can't ever find the time for it anyway, so I'd probably be interested to contribute if it looks okay.

That said, I'd probably still buy it even of you don't opensource it, so this is probably something to consider. Anything resembling a forum in CI so far is inadequate, this is good news by all means. Keep at it.
#4

[eluser]PhilTem[/eluser]
Wow, that really looks promising. And you did all that code writing by yourself? Man, where do you take your time? Big Grin
Wish I had so much time working on my projects Tongue They'd be done within days.

Anyways, I'm looking forward to your first release. And if you need some alpha/beta testers or contributors: I'm pretty familiar with CI and all the fancy things one can do with CI Wink So just hit me up if you need help!
#5

[eluser]MatthewSchenker[/eluser]
Greetings,
I would also be interested in seeing this project developed.

By the way, regarding CI-based forums: take a look at the one Phil Sturgeon is using for his PyroCMS site: https://www.pyrocms.com/forums

I like this one, and I assume it's made with CodeIgniter?

Thanks,
Matthew
#6

[eluser]srpurdy[/eluser]
Cool good to see people are interested. Smile

@Coccodrillo That's a good point. I'm guessing Version 1 will be completely solo. Atleast I'm thinking that. But At the same time I've learned much over the years, but I can never assume that there isn't better ways to do somethings. This is where I think open source would be cool, cause it would make the project better, but it would also actually probably teach me something. So that's actually more of my reasoning. I don't care about money. Knowledge is worth more.

@MatthewSchenker Mine doesn't look too far different in terms of looks. Than what Phil has done actually looks like he's using some Twitter Bootstrap css also haha. Smile I been to pyro before looks like it changed a bit since last time I was there 6 or more months ago hehe. I'll probably post some screenshots later. I actually want it look more polished before I do. I'm not a big graphic designer. So I'll likely be just 90% css stuff. Since it's all themeable people can customize that themselves later.

@PhilTem So far the main controller/Module is about 2500 lines, and the model is about 1500. And since it's early stages there is some redundant lines. This isn't really that much. Most of it is actually just logic stuff for permissions and user groups and stuff. Makes the functions really big. I've done a system that's about 25 times as large as that before that's more of a custom system. So I don't really find this that much really. Big Grin I did this in about a week. With some small breaks in between. Mind you I'm actually pretty busy. But When I get something in my head about the logic of something I just do it all as fast as possible because I have to keep a lot of information in my head. As for my time. I work at my own development business so I do 12 + hours daily for the last 2-3 years. So I'm used to it lol. Smile

I'm a little bit of 100% or nothing kind of person. So When I do something it's at full force.

I'll keep posting more information on the project as it goes. Smile

I may also open up things to some testing too. Although I actually have a few people testing the current version now. Which has allowed me to fix a few small issues already. Smile A few I'm still aware of. But pretty solid actually at the moment. So I'm ready to add more features at this point.
#7

[eluser]srpurdy[/eluser]
A bit of a teaser I guess for now. Tongue

[Image: topicteaser.jpg]

I should meantion it stops on the right because I have giant side bar area. It will size properly on the width of the layout.
#8

[eluser]Aken[/eluser]
IMO, skip the titles for each reply. Nobody cares about those.

Will keep an eye on this, always nice to see new code. Would have to see the end result (or an RC at least) to know whether or not I'd want to use it in production anywhere. A forum is one thing I'd like to develop myself one of these days. Don't know if it would be on CI or not, but would be nice to have another reference for how someone else did it.
#9

[eluser]srpurdy[/eluser]
[quote author="Aken" date="1344729669"]IMO, skip the titles for each reply. Nobody cares about those.

Will keep an eye on this, always nice to see new code. Would have to see the end result (or an RC at least) to know whether or not I'd want to use it in production anywhere. A forum is one thing I'd like to develop myself one of these days. Don't know if it would be on CI or not, but would be nice to have another reference for how someone else did it.[/quote]

I thought about that too actually about the titles. I'm thinking I'll just put in an option to turn them off. You can actually change the reply title if you wanted to. When replying. So I think it's fine if someone wants that. So I'll make it an option instead.

As for production. I guess you mean in terms of performance and security? I can say I am fanatical about both. So If something isn't good I'm very critical of that. Of course that only goes as far as your knowledge I guess. Another reason to have it open source I suppose.

I run a heavy set of mod_security rules on my servers. So I'm not completely incapable at least. :-D

And I'm building it around CSRF and of course XSS built into CI. The performance tests will come though as well. Right now I don't have any bottlenecks. I'm properly indexing tables as I go. So from the database point of view things are in good shape right now. Page rendering times under suPHP are around 0.1 seconds. (Half of which is CI) That would be half that under fast-cgi or mod_ruid2. So I'm on target right now in terms of performance. The topic tracking is probably going to add some load to the system. So that's where my focus is for making that as good as possible. Smile

#10

[eluser]srpurdy[/eluser]
http://imageshack.us/photo/my-images/7/m...splay.jpg/

http://imageshack.us/photo/my-images/36/...eries.jpg/

Posting a couple more pictures. This is showing the main forum display, and the second picture is the query display. For this example we render the entire main display in 16 queries. Although this would vary depending on how many categories you would have. I thought about putting all the result sets for that into an array also, but decided probably it's unlikely that it would be a problem to have 1 query per category for the entire display. I think that's fine. Thoughts?

In anycase the subforums, and user permissions are extracted via array's so there is no query stacking. So if you have 1 category and 500 forums it will still only do a total of 5 queries. (3 global) and 1 for the category and 1 for all of the 500 forums. Same is true if you only have 1 category and 1 forum. So there is 1 extra query per category. This is the only stacking at the moment. Since most forums don't have too many of these. I think most I've seen is 10. I don't imagine that being an issue. Although wouldn't mind some feedback on that if people think it would be a problem. Smile




Theme © iAndrew 2016 - Forum software by © MyBB