In order to use comments, you'll need to make a few adjustments to your content item model too.
Class property changes
You will need to add new properties to your content item model.
This should be the full path to your comment model class. For example:
public static $commentClass = 'IPS\yourApp\YourCommentClass';
If your content item requires a first comment (e.g. the Forums app requires the first comment, which appears as the first post in a topic), you can set this property to TRUE. By default, it is FALSE.
You also need to add new values to your content item model's $databaseColumnMap, as follows:
Required. Value should be the column name that holds the total comment count for the content item.
Optional. Value should be the column name that holds a timestamp of when the last comment was made.
Optional. Value should be the column name that holds the ID of the member who made the last comment.
Optional. Value should be the column name that holds the username of the member who made the last comment.
Although optional, the last three properties above can make your application more efficient if they are specified and used.
Additional content item model methods available
Returns the number of comments that should be shown per page. The default is 25. You can override this in your model to change the number shown per page, for example to base it on a setting within your application.
Returns the number of comment pages the item has.
$recache (boolean, optional, default FALSE)
Forces a recalculation and recache of the result of this method.
Returns the HTML for the pagination of the content item comments.
$queryString (array, optional)
An array of additional query string parameters to be added to pagination URLs (for example, current sorting options).
$template (string, optional, default 'pagination')
The name of the template to use to generate the pagination. Either 'pagination' or 'miniPagination'.
$pageCount (integer, optional)
The number of pages of comments on this item, if known. If NULL, will be calculated on demand.
$baseUrl (\IPS\Url\Http, optional)
Allows you to specify an alternative base URL to use for the pagination links. By default, the item's normal base URL will be used.
Returns the comments on the content item. If $limit is 1, will return an \IPS\Content\Comment object. For all other params, will return an array of comments if any exist, or NULL.
$limit (integer, optional)
The number of comments to fetch. By default, the number returned by static::getCommentsPerPage is used.
$offset (integer, optional)
The offset from which to return comments. By default, whatever value exists in \IPS\Request::i()->page is used.
$order (string, optional, default 'date')
The field on which comments should be sorted.
$orderDirection (string, optional, default 'asc')
The direction in which comments should be sorted, either 'asc' or 'desc'.
$member (\IPS\Member, optional)
If a member object is provided, will fetch comments only by that member.
$includeHidden (boolean, optional)
Determines whether hidden comments should also be returned. By default, the currently-logged in member's permissions will be used to determine this value.
$cutoff (\IPS\DateTime, optional)
If provided, only comments posted after this time will be returned.
$extraWhere (string or array, optional)
Extra parameters to pass into the WHERE clause of the underlying query.
$bypassCache (boolean, optional, default FALSE)
Determines whether comments should be forcefully reloaded rather than fetched from the cache.
Returns the HTML for the comment form
Returns the URL for the last page of comments, as an \IPS\Http\Url object.
Indicates whether the member is able to comment on the item.
$member (\IPS\Member, optional)
If provided, will use this member's permissions when checking. By default, the currently-logged in member will be used.
Other behavioral changes
- The stats() method will now return an additional key containing the number of comments on the item.