2ce2de0ae5
register CommentsManager service, allow override, document in config.sample.php don't insert autoincrement ids in tests, because of dislikes from oracle and pgsql specify timezone in null date only accepts strings for ID parameter that can be converted to int replace forgotten hardcoded IDs in tests react on deleted users react on file deletion Postgresql compatibility lastInsertId needs *PREFIX* with the table name do not listen for file deletion, because it is not reliable (trashbin, external storages) add runtime cache for comments
173 lines
4.4 KiB
PHP
173 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace OCP\Comments;
|
|
|
|
/**
|
|
* Interface ICommentsManager
|
|
*
|
|
* This class manages the access to comments
|
|
*
|
|
* @package OCP\Comments
|
|
* @since 9.0.0
|
|
*/
|
|
interface ICommentsManager {
|
|
|
|
/**
|
|
* @const DELETED_USER type and id for a user that has been deleted
|
|
* @see deleteReferencesOfActor
|
|
* @since 9.0.0
|
|
*
|
|
* To be used as replacement for user type actors in deleteReferencesOfActor().
|
|
*
|
|
* User interfaces shall show "Deleted user" as display name, if needed.
|
|
*/
|
|
const DELETED_USER = 'deleted_user';
|
|
|
|
/**
|
|
* returns a comment instance
|
|
*
|
|
* @param string $id the ID of the comment
|
|
* @return IComment
|
|
* @throws NotFoundException
|
|
* @since 9.0.0
|
|
*/
|
|
public function get($id);
|
|
|
|
/**
|
|
* returns the comment specified by the id and all it's child comments
|
|
*
|
|
* @param string $id
|
|
* @param int $limit max number of entries to return, 0 returns all
|
|
* @param int $offset the start entry
|
|
* @return array
|
|
* @since 9.0.0
|
|
*
|
|
* The return array looks like this
|
|
* [
|
|
* 'comment' => IComment, // root comment
|
|
* 'replies' =>
|
|
* [
|
|
* 0 =>
|
|
* [
|
|
* 'comment' => IComment,
|
|
* 'replies' =>
|
|
* [
|
|
* 0 =>
|
|
* [
|
|
* 'comment' => IComment,
|
|
* 'replies' => [ … ]
|
|
* ],
|
|
* …
|
|
* ]
|
|
* ]
|
|
* 1 =>
|
|
* [
|
|
* 'comment' => IComment,
|
|
* 'replies'=> [ … ]
|
|
* ],
|
|
* …
|
|
* ]
|
|
* ]
|
|
*/
|
|
public function getTree($id, $limit = 0, $offset = 0);
|
|
|
|
/**
|
|
* returns comments for a specific object (e.g. a file).
|
|
*
|
|
* The sort order is always newest to oldest.
|
|
*
|
|
* @param string $objectType the object type, e.g. 'files'
|
|
* @param string $objectId the id of the object
|
|
* @param int $limit optional, number of maximum comments to be returned. if
|
|
* not specified, all comments are returned.
|
|
* @param int $offset optional, starting point
|
|
* @param \DateTime $notOlderThan optional, timestamp of the oldest comments
|
|
* that may be returned
|
|
* @return IComment[]
|
|
* @since 9.0.0
|
|
*/
|
|
public function getForObject(
|
|
$objectType,
|
|
$objectId,
|
|
$limit = 0,
|
|
$offset = 0,
|
|
\DateTime $notOlderThan = null
|
|
);
|
|
|
|
/**
|
|
* @param $objectType string the object type, e.g. 'files'
|
|
* @param $objectId string the id of the object
|
|
* @return Int
|
|
* @since 9.0.0
|
|
*/
|
|
public function getNumberOfCommentsForObject($objectType, $objectId);
|
|
|
|
/**
|
|
* creates a new comment and returns it. At this point of time, it is not
|
|
* saved in the used data storage. Use save() after setting other fields
|
|
* of the comment (e.g. message or verb).
|
|
*
|
|
* @param string $actorType the actor type (e.g. 'user')
|
|
* @param string $actorId a user id
|
|
* @param string $objectType the object type the comment is attached to
|
|
* @param string $objectId the object id the comment is attached to
|
|
* @return IComment
|
|
* @since 9.0.0
|
|
*/
|
|
public function create($actorType, $actorId, $objectType, $objectId);
|
|
|
|
/**
|
|
* permanently deletes the comment specified by the ID
|
|
*
|
|
* When the comment has child comments, their parent ID will be changed to
|
|
* the parent ID of the item that is to be deleted.
|
|
*
|
|
* @param string $id
|
|
* @return bool
|
|
* @since 9.0.0
|
|
*/
|
|
public function delete($id);
|
|
|
|
/**
|
|
* saves the comment permanently and returns it
|
|
*
|
|
* if the supplied comment has an empty ID, a new entry comment will be
|
|
* saved and the instance updated with the new ID.
|
|
*
|
|
* Otherwise, an existing comment will be updated.
|
|
*
|
|
* Throws NotFoundException when a comment that is to be updated does not
|
|
* exist anymore at this point of time.
|
|
*
|
|
* @param IComment &$comment
|
|
* @return bool
|
|
* @throws NotFoundException
|
|
* @since 9.0.0
|
|
*/
|
|
public function save(IComment &$comment);
|
|
|
|
/**
|
|
* removes references to specific actor (e.g. on user delete) of a comment.
|
|
* The comment itself must not get lost/deleted.
|
|
*
|
|
* A 'user' type actor (type and id) should get replaced by the
|
|
* value of the DELETED_USER constant of this interface.
|
|
*
|
|
* @param string $actorType the actor type (e.g. 'user')
|
|
* @param string $actorId a user id
|
|
* @return boolean
|
|
* @since 9.0.0
|
|
*/
|
|
public function deleteReferencesOfActor($actorType, $actorId);
|
|
|
|
/**
|
|
* deletes all comments made of a specific object (e.g. on file delete)
|
|
*
|
|
* @param string $objectType the object type (e.g. 'file')
|
|
* @param string $objectId e.g. the file id
|
|
* @return boolean
|
|
* @since 9.0.0
|
|
*/
|
|
public function deleteCommentsAtObject($objectType, $objectId);
|
|
|
|
}
|