/** * Returns a list of properties for this nodes. * * The properties list is a list of propertynames the client requested, * encoded in clark-notation {xmlnamespace}tagname * * If the array is empty, it means 'all properties' were requested. * * Note that it's fine to liberally give properties back, instead of * conforming to the list of requested properties. * The Server class will filter out the extra. * * @param array $properties * @return array */ function getProperties($properties) { $properties = array_keys($this->properties); $result = []; foreach ($properties as $property) { $getter = $this->properties[$property]; if (method_exists($this->comment, $getter)) { $result[$property] = $this->comment->{$getter}(); } } if ($this->comment->getActorType() === 'users') { $user = $this->userManager->get($this->comment->getActorId()); $displayName = is_null($user) ? null : $user->getDisplayName(); $result[self::PROPERTY_NAME_ACTOR_DISPLAYNAME] = $displayName; } $unread = null; $user = $this->userSession->getUser(); if (!is_null($user)) { $readUntil = $this->commentsManager->getReadMark($this->comment->getObjectType(), $this->comment->getObjectId(), $user); if (is_null($readUntil)) { $unread = 'true'; } else { $unread = $this->comment->getCreationDateTime() > $readUntil; // re-format for output $unread = $unread ? 'true' : 'false'; } } $result[self::PROPERTY_NAME_UNREAD] = $unread; return $result; }
/** * Returns a list of properties for this nodes. * * The properties list is a list of propertynames the client requested, * encoded in clark-notation {xmlnamespace}tagname * * If the array is empty, it means 'all properties' were requested. * * Note that it's fine to liberally give properties back, instead of * conforming to the list of requested properties. * The Server class will filter out the extra. * * @param array $properties * @return array */ function getProperties($properties) { $properties = array_keys($this->properties); $result = []; foreach ($properties as $property) { $getter = $this->properties[$property]; if (method_exists($this->comment, $getter)) { $result[$property] = $this->comment->{$getter}(); } } if ($this->comment->getActorType() === 'users') { $user = $this->userManager->get($this->comment->getActorId()); $displayName = is_null($user) ? null : $user->getDisplayName(); $result['{' . self::NS_OWNCLOUD . '}actorDisplayName'] = $displayName; } return $result; }
/** * updates a Comment data row * * @param IComment $comment * @return bool * @throws NotFoundException */ protected function update(IComment $comment) { $qb = $this->dbConn->getQueryBuilder(); $affectedRows = $qb->update('comments')->set('parent_id', $qb->createNamedParameter($comment->getParentId()))->set('topmost_parent_id', $qb->createNamedParameter($comment->getTopmostParentId()))->set('children_count', $qb->createNamedParameter($comment->getChildrenCount()))->set('actor_type', $qb->createNamedParameter($comment->getActorType()))->set('actor_id', $qb->createNamedParameter($comment->getActorId()))->set('message', $qb->createNamedParameter($comment->getMessage()))->set('verb', $qb->createNamedParameter($comment->getVerb()))->set('creation_timestamp', $qb->createNamedParameter($comment->getCreationDateTime(), 'datetime'))->set('latest_child_timestamp', $qb->createNamedParameter($comment->getLatestChildDateTime(), 'datetime'))->set('object_type', $qb->createNamedParameter($comment->getObjectType()))->set('object_id', $qb->createNamedParameter($comment->getObjectId()))->where($qb->expr()->eq('id', $qb->createParameter('id')))->setParameter('id', $comment->getId())->execute(); if ($affectedRows === 0) { throw new NotFoundException('Comment to update does ceased to exist'); } $this->dispatcher->dispatch(CommentsEvent::EVENT_UPDATE, new CommentsEvent(CommentsEvent::EVENT_UPDATE, $comment)); return $affectedRows > 0; }