You need todo some research.
Start a spreedsheet with all your required features down the left, and all the possible solutions across the top.
For each "[solution][requirement]" cell, put a percentage value that indicates how adequate the solution supports the requirement.
You then add up all the percentages for each solution to get a solution match value. ie: How close does a solution match your overall requirements.
BTW: Project managers love this kinda stuff and if you are doing it for University, then its a good idea to demonstrate how you made critical decisions.
In a perfect world, you would find a free solution that matches all your requirements. But, this isn't a perfect world.
Often you will find a perfect solution that costs money. Or, a free solution that is easy to upgrade with your own code.
You need to weigh up your position.
As a tip, you need to search for all websites that are similar to your requirements. At the bottom of the main page of a number of sites is the product used to create the website. ie: Wordpress, vBulletin, phpBB, etc, etc.
eg: This site uses vBulletin. Sometimes you need to look at the HTML meta information, or sometimes you need to guess since a lot of sites hide what product they used.
You need to record things like:
1) Is the source code closed but you need open source?
2) Is it free? Do you have a budget?
3) Is it easy to extend? ie: Does it come with easy API documentation?
4) How many features would have to be coded and how long will that take?
5) Do I have the skill level and time to code up custom features?
You need to document all this in a table so you can make qualified decisions.
Time managment is a critical part of a project like this.
For me, Im subborn and Id just start coding from scratch using BuzzAPI. Mainly because Im realtively fast at coding up components.
But, for a lot of people I recommend Wordpress, and custom templates. But, some people prefer Joomla!
The worst that can happen is, you will end up with a table with a lot of blank data.
Then at least you know what questions you need to be asking.
eg: You might see that Wordpress doesn't support user profiles with the fields you want. In which case, you can either extend the core Wordpress code, or write your own using Wordpress templates, or, have a seperate system that handles user profile managment.
Again, each of these sub-solutions need to be documented and you need to estimate your ablity to code this in time.
As a final though. Look out for the "law of diminishing returns"
In programming it means that, when you add up all the time it takes to learn a new API or to deal with other peoples code, you might have well have coded it up yourself from scratch.
So, often people will offer "good advice" based on their knowledge base that they have built up over many years, and not because its the "best solution" for your requirements.
Look out for that last one.