The short answer is yes, it can do it. WordPress is malleable enough to do almost anything.
The long answer is yes, BUT you won’t get anywhere near your goal with out-of-the-box functionality. You’d need a sizeable set of plugins and code modification.
Without giving it much thought, here’s some brainstorming on ideas:
Each user upload would be attached to a post, post could have short description of the upload. Post could use categories, tags, and custom fields, all of which are searchable either natively, with existing or custom plugins.
Utilize WP’s built-in roles and a/some capability management plugins to have tiered user groups. Simple contributor could be free account with only viewing and commenting priveleges. Author-level user could be by paid membership, have their own author page (via WordPress built-in author template functionality). Could be given upload priveleges (no idea how you’d restrict this, I’ve not worked with user uploads before).
Since each upload is attached to a post, could use GD Star Rating plugin as your content review mechanism, wherein users could rate the upload via the plugin rating function and site management could provide a review of the content via the plugin’s review function.
I don’t know how/if you’d need to set up custom search functions to search through tags/categories/custom fields/etc.
Blog and space for advertising already taken care of by WP native functionality and a well-chosen theme or coded custom theme with ad space.
I don’t know how all of that would work, but those are the ideas that were swimming in my head. Always a fun exercise. 🙂
This is much more simple than that.
Use TDO mini forms for user submission:
http://wordpress.org/extend/plugins/tdo-mini-forms/
Check the codex for extended search options.
While we’re on the “can I do this with WordPress thread,” I’d like to ask about something:
Is it possible to create a WordPress plugin that replaces, for example, any blog post listings with a fixed snippet of HTML? To clarify, I’d like to do this without having to edit theme code.
@enricob
You can do this with filters and/or actions.
You have to hook into “the_content()” function, and depending what exactly you want to do, use a filter or action.
If you want to replace the entire content, or just append/prepend your HTML snippet, then you would want to use an action.
If you want to do something like replace “[foobar]” in your post with your HTML snippet, then you’d use a filter.
The following would add “<p>Hello There!</p>” to the end of each post/page content:
function add_html_snip($content) {
$html_snip = "<p>Hello There!</p>";
return $content . $html_snip;
}
add_action ( 'the_content', 'add_html_snip');
This code would go into your plugin. Visit this codex page for more info on plugin structure and actions/filters:
http://codex.wordpress.org/Plugin_API