eZ Publish: Comment / UGC system, Requirements, 4.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$Author$
$Revision$
$Date$
:Status: Draft

.. contents::

=======
Preface
=======

eZ Publish already has possibility to have comments and has since the
start. But for large customers using the content structure is not
optimal for scalability as overhead of node / object / attributes
are to high for user generated content (UGC) on high throughput sites.
Beside scalability there is high demand for better approval, moderation,
reporting and spam handling of UGC.


========
Features
========

In prioritized order for 4.3:

#1 New comment extension
------------------------
Should: Use custom table with fields for id, text, name, webpage, email,
        time, user id, object id, object attribute id, language
Should: Support posting by logged in and not logged in users
Should: Automatically fill in name, email and webpage if logged in
Should: Store name / email / web address in cookie for later use if
        user is not logged in and she checks a 'Remember me' checkbox 
Should: Tie in to objects with datatype (so add attribute if you want comments)
Should: Support read and write permissions (use ezp roles to control access)
Should: Be able to enable/disable and hide/show comments
        pr object attribute (on datatype content view)
Should: Use ezjscore and make comment interface ajaxed (opt in)
Should: Be extendable to be able to plugin captcha and spam detection system
Should: Support listing comments with template and ajax with paging
Should: Remove comments when object / attribute is removed
Could: Support automatically disabling commenting pr attribute after n days
Could: [later version] Support reply to comment, thus supporting threaded comments
Could: Have fields for ip and session key for moderation use (this could be provided by #2)
Could: Store comment count on object attribute so it has the count without querying table
Might: Need additional table columns for moderation unless moderation
       system (#2) provides separate storage for content waiting for moderation

#2 New moderation system
------------------------
Should: Add a tab in admin for UGC moderation
Should: Allow automatically approval by setting or permissions
Should: Separate between approved, not approved(deleted/hidden) and un moderated (auto approved) content
Could: Provide dashboard box for moderation task / lists (see admin refresh requirement document)
Could: Support email notification to approver
Could: Be implemented abstracted so it can be re used later for other
       types of UGC.

#2.1 User reporting features (user moderation)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Support reporting UGC
Could: Support notifications to admin when content is reported
Could: Support automatic un publishing content when reported n times if
       not previously moderated (auto approved)

#3 Notification support for comments
------------------------------------
Terms: subscriber = A logged in or anonymous user with mail
       subscription = A relation between subscriber and the content she subscribes to 
Should: Allow commenter to subscribe on notifications pr object in comment form
Should: Trigger notification system on comment publish
Should: Have a interface for changing subscription
Should: Send approval request of subscription  to email if anonymous (once pr subscription)
Could: Support sending collection of subscription in one mail on timely intervals

#4 eZFind/search support for comments [for later]
-------------------------------------------------
Should: Provide text string of comments to normal search engine
Should: Support sub attribute filter or something similar in ezfind
