Merge pull request #255 from nextcloud/bugfix/noid/htmlentity

htmlentities encode/decode
pull/270/head
Julius Härtl 2018-12-21 17:41:30 +01:00 zatwierdzone przez GitHub
commit 1fd2905e37
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
5 zmienionych plików z 45 dodań i 41 usunięć

Wyświetl plik

@ -325,21 +325,8 @@ class NotesRequestBuilder extends CoreRequestBuilder {
* @return Note
*/
protected function parseNotesSelectSql($data): Note {
$dTime = new DateTime($this->get('published_time', $data, 'yesterday'));
// TODO - use $note->importFromDatabase() ?
$note = new Note();
$note->setId($data['id'])
->setTo($data['to'])
->setToArray(json_decode($data['to_array'], true))
->setCcArray(json_decode($data['cc'], true))
->setBccArray(json_decode($data['bcc']))
->setLocal(($data['local'] === '1') ? true : false)
->setPublished($data['published']);
$note->setContent($data['content'])
->setPublishedTime($dTime->getTimestamp())
->setAttributedTo($data['attributed_to'])
->setInReplyTo($data['in_reply_to']);
$note->importFromDatabase($data);
$instances = json_decode($data['instances'], true);
if (is_array($instances)) {

Wyświetl plik

@ -468,6 +468,7 @@ class ACore extends Item implements JsonSerializable {
case self::AS_STRING:
$value = strip_tags($value);
$value = html_entity_decode($value, ENT_QUOTES | ENT_HTML5);
return $value;
@ -496,7 +497,7 @@ class ACore extends Item implements JsonSerializable {
$this->setId($this->validate(self::AS_ID, 'id', $data, ''));
$this->setType($this->validate(self::AS_TYPE, 'type', $data, ''));
$this->setUrl($this->validate(self::AS_URL, 'url', $data, ''));
$this->setSummary($this->validate(self::AS_STRING, 'summary', $data, ''));
$this->setSummary($this->get('summary', $data, ''));
$this->setToArray($this->validateArray(self::AS_ID, 'to', $data, []));
$this->setCcArray($this->validateArray(self::AS_ID, 'cc', $data, []));
$this->setPublished($this->validate(self::AS_DATE, 'published', $data, ''));
@ -509,15 +510,17 @@ class ACore extends Item implements JsonSerializable {
* @param array $data
*/
public function importFromDatabase(array $data) {
$this->setId($this->get('id', $data, ''));
$this->setType($this->get('type', $data, ''));
$this->setUrl($this->get('url', $data, ''));
$this->setSummary($this->get('summary', $data, ''));
$this->setToArray($this->getArray('to', $data, []));
$this->setCcArray($this->getArray('cc', $data, []));
$this->setPublished($this->get('published', $data, ''));
$this->setActorId($this->get('actor_id', $data, ''));
$this->setObjectId($this->get('object_id', $data, ''));
$this->setId($this->validate(self::AS_ID, 'id', $data, ''));
$this->setType($this->validate(self::AS_TYPE, 'type', $data, ''));
$this->setUrl($this->validate(self::AS_URL, 'url', $data, ''));
$this->setSummary($this->validate(self::AS_STRING, 'summary', $data, ''));
$this->setTo($this->validate(self::AS_ID, 'to', $data, ''));
$this->setToArray($this->validateArray(self::AS_ID, 'to_array', $data, []));
$this->setCcArray($this->validateArray(self::AS_ID, 'cc', $data, []));
$this->setBccArray($this->validateArray(self::AS_ID, 'bcc', $data, []));
$this->setPublished($this->validate(self::AS_DATE, 'published', $data, ''));
$this->setActorId($this->validate(self::AS_ID, 'actor_id', $data, ''));
$this->setObjectId($this->validate(self::AS_ID, 'object_id', $data, ''));
$this->setSource($this->get('source', $data, ''));
$this->setLocal(($this->getInt('local', $data, 0) === 1));
}

Wyświetl plik

@ -443,7 +443,6 @@ class Person extends ACore implements JsonSerializable {
* @param array $data
*
* @throws UrlCloudException
* @throws InvalidResourceEntryException
*/
public function import(array $data) {
parent::import($data);
@ -476,17 +475,17 @@ class Person extends ACore implements JsonSerializable {
*/
public function importFromDatabase(array $data) {
parent::importFromDatabase($data);
$this->setPreferredUsername($this->get('preferred_username', $data, ''))
->setName($this->get('name', $data, ''))
->setAccount($this->get('account', $data, ''))
$this->setPreferredUsername($this->validate(self::AS_USERNAME, 'preferred_username', $data, ''))
->setName($this->validate(self::AS_USERNAME, 'name', $data, ''))
->setAccount($this->validate(self::AS_ACCOUNT, 'account', $data, ''))
->setPublicKey($this->get('public_key', $data, ''))
->setPrivateKey($this->get('private_key', $data, ''))
->setInbox($this->get('inbox', $data, ''))
->setOutbox($this->get('outbox', $data, ''))
->setFollowers($this->get('followers', $data, ''))
->setFollowing($this->get('following', $data, ''))
->setSharedInbox($this->get('shared_inbox', $data, ''))
->setFeatured($this->get('featured', $data, ''))
->setInbox($this->validate(self::AS_URL, 'inbox', $data, ''))
->setOutbox($this->validate(self::AS_URL, 'outbox', $data, ''))
->setFollowers($this->validate(self::AS_URL, 'followers', $data, ''))
->setFollowing($this->validate(self::AS_URL, 'following', $data, ''))
->setSharedInbox($this->validate(self::AS_URL, 'shared_inbox', $data, ''))
->setFeatured($this->validate(self::AS_URL, 'featured', $data, ''))
->setDetails($this->getArray('details', $data, []))
->setCreation($this->getInt('creation', $data, 0));
}

Wyświetl plik

@ -33,7 +33,6 @@ namespace OCA\Social\Model\ActivityPub\Object;
use DateTime;
use JsonSerializable;
use OCA\Social\Model\ActivityPub\ACore;
use OCA\Social\Service\ActivityService;
use OCA\Social\Service\SignatureService;
@ -211,11 +210,27 @@ class Note extends ACore implements JsonSerializable {
$this->setAttributedTo($this->validate(ACore::AS_ID, 'attributedTo', $data, ''));
$this->setSensitive($this->getBool('sensitive', $data, false));
$this->setConversation($this->validate(ACore::AS_ID, 'conversation', $data, ''));
$this->setContent($this->validate(ACore::AS_STRING, 'content', $data, ''));
$this->setContent($this->get('content', $data, ''));
$this->convertPublished();
}
/**
* @param array $data
*/
public function importFromDatabase(array $data) {
parent::importFromDatabase($data);
$dTime = new DateTime($this->get('published_time', $data, 'yesterday'));
$this->setContent($this->validate(self::AS_STRING, 'content', $data, ''));;
$this->setPublishedTime($dTime->getTimestamp());
$this->setAttributedTo($this->validate(self::AS_ID, 'attributed_to', $data, ''));
$this->setInReplyTo($this->validate(self::AS_ID, 'in_reply_to', $data));
}
/**
* @return array
*/
@ -225,10 +240,10 @@ class Note extends ACore implements JsonSerializable {
return array_merge(
parent::jsonSerialize(),
[
'content' => $this->getContent(),
'content' => $this->getContent(),
'attributedTo' => $this->getUrlSocial() . $this->getAttributedTo(),
'inReplyTo' => $this->getInReplyTo(),
'sensitive' => $this->isSensitive(),
'inReplyTo' => $this->getInReplyTo(),
'sensitive' => $this->isSensitive(),
'conversation' => $this->getConversation()
]
);

Wyświetl plik

@ -85,9 +85,9 @@ class PostService {
public function createPost(Post $post, ACore &$activity = null): string {
$note =
$this->noteService->generateNote(
$post->getUserId(), $post->getContent(), $post->getType()
$post->getUserId(), htmlentities($post->getContent(), ENT_QUOTES), $post->getType()
);
$this->noteService->replyTo($note, $post->getReplyTo());
$this->noteService->addRecipients($note, $post->getType(), $post->getTo());