kopia lustrzana https://github.com/nextcloud/social
commit
595e734a81
|
@ -207,6 +207,13 @@
|
|||
<length>127</length>
|
||||
</field>
|
||||
|
||||
<field>
|
||||
<name>source</name>
|
||||
<type>text</type>
|
||||
<length>3000</length>
|
||||
<notnull>true</notnull>
|
||||
</field>
|
||||
|
||||
<field>
|
||||
<name>creation</name>
|
||||
<type>timestamp</type>
|
||||
|
@ -236,8 +243,8 @@
|
|||
|
||||
<field>
|
||||
<name>local</name>
|
||||
<type>text</type>
|
||||
<length>7</length>
|
||||
<type>boolean</type>
|
||||
<default>false</default>
|
||||
<notnull>true</notnull>
|
||||
</field>
|
||||
|
||||
|
@ -318,6 +325,13 @@
|
|||
<notnull>true</notnull>
|
||||
</field>
|
||||
|
||||
<field>
|
||||
<name>source</name>
|
||||
<type>text</type>
|
||||
<length>3000</length>
|
||||
<notnull>true</notnull>
|
||||
</field>
|
||||
|
||||
<field>
|
||||
<name>creation</name>
|
||||
<type>timestamp</type>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<name>Social</name>
|
||||
<summary>🎉 Nextcloud becomes part of the federated social networks!</summary>
|
||||
<description><![CDATA[test]]></description>
|
||||
<version>0.0.29</version>
|
||||
<version>0.0.32</version>
|
||||
<licence>agpl</licence>
|
||||
<author mail="maxence@artificial-owl.com">Maxence Lange</author>
|
||||
<author mail="jus@bitgrid.net">Julius Härtl</author>
|
||||
|
|
|
@ -61,35 +61,31 @@ class CacheActorsRequest extends CacheActorsRequestBuilder {
|
|||
* @param bool $local
|
||||
*
|
||||
* @return int
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function save(Person $actor, bool $local = false): int {
|
||||
|
||||
try {
|
||||
$qb = $this->getCacheActorsInsertSql();
|
||||
$qb->setValue('id', $qb->createNamedParameter($actor->getId()))
|
||||
->setValue('account', $qb->createNamedParameter($actor->getAccount()))
|
||||
->setValue('local', $qb->createNamedParameter(($local) ? '1' : '0'))
|
||||
->setValue('following', $qb->createNamedParameter($actor->getFollowing()))
|
||||
->setValue('followers', $qb->createNamedParameter($actor->getFollowers()))
|
||||
->setValue('inbox', $qb->createNamedParameter($actor->getInbox()))
|
||||
->setValue('shared_inbox', $qb->createNamedParameter($actor->getSharedInbox()))
|
||||
->setValue('outbox', $qb->createNamedParameter($actor->getOutbox()))
|
||||
->setValue('featured', $qb->createNamedParameter($actor->getFeatured()))
|
||||
->setValue('url', $qb->createNamedParameter($actor->getUrl()))
|
||||
->setValue(
|
||||
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
|
||||
)
|
||||
->setValue('name', $qb->createNamedParameter($actor->getName()))
|
||||
->setValue('summary', $qb->createNamedParameter($actor->getSummary()))
|
||||
->setValue('public_key', $qb->createNamedParameter($actor->getPublicKey()));
|
||||
$qb = $this->getCacheActorsInsertSql();
|
||||
$qb->setValue('id', $qb->createNamedParameter($actor->getId()))
|
||||
->setValue('account', $qb->createNamedParameter($actor->getAccount()))
|
||||
->setValue('local', $qb->createNamedParameter(($local) ? '1' : '0'))
|
||||
->setValue('following', $qb->createNamedParameter($actor->getFollowing()))
|
||||
->setValue('followers', $qb->createNamedParameter($actor->getFollowers()))
|
||||
->setValue('inbox', $qb->createNamedParameter($actor->getInbox()))
|
||||
->setValue('shared_inbox', $qb->createNamedParameter($actor->getSharedInbox()))
|
||||
->setValue('outbox', $qb->createNamedParameter($actor->getOutbox()))
|
||||
->setValue('featured', $qb->createNamedParameter($actor->getFeatured()))
|
||||
->setValue('url', $qb->createNamedParameter($actor->getUrl()))
|
||||
->setValue(
|
||||
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
|
||||
)
|
||||
->setValue('name', $qb->createNamedParameter($actor->getName()))
|
||||
->setValue('summary', $qb->createNamedParameter($actor->getSummary()))
|
||||
->setValue('public_key', $qb->createNamedParameter($actor->getPublicKey()))
|
||||
->setValue('source', $qb->createNamedParameter($actor->getSource()));
|
||||
|
||||
$qb->execute();
|
||||
$qb->execute();
|
||||
|
||||
return $qb->getLastInsertId();
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
return $qb->getLastInsertId();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ class CacheActorsRequestBuilder extends CoreRequestBuilder {
|
|||
'ca.id', 'ca.account', 'ca.following', 'ca.followers', 'ca.inbox',
|
||||
'ca.shared_inbox', 'ca.outbox', 'ca.featured', 'ca.url',
|
||||
'ca.preferred_username', 'ca.name', 'ca.summary',
|
||||
'ca.public_key', 'ca.local', 'ca.creation'
|
||||
'ca.public_key', 'ca.local', 'ca.source', 'ca.creation'
|
||||
)
|
||||
->from(self::TABLE_CACHE_ACTORS, 'ca');
|
||||
|
||||
|
|
|
@ -237,7 +237,8 @@ class CoreRequestBuilder {
|
|||
// TODO: Pagination should use published date, once we can properly query the db for that
|
||||
$qb->andWhere(
|
||||
$expr->lt(
|
||||
$this->defaultSelectAlias . '.creation', $qb->createNamedParameter($dt, IQueryBuilder::PARAM_DATE),
|
||||
$this->defaultSelectAlias . '.creation',
|
||||
$qb->createNamedParameter($dt, IQueryBuilder::PARAM_DATE),
|
||||
IQueryBuilder::PARAM_DATE
|
||||
)
|
||||
);
|
||||
|
@ -248,7 +249,7 @@ class CoreRequestBuilder {
|
|||
|
||||
/**
|
||||
* @param IQueryBuilder $qb
|
||||
* @param string $field"
|
||||
* @param string $field
|
||||
* @param string|integer|array $values
|
||||
*/
|
||||
private function limitToDBField(IQueryBuilder &$qb, $field, $values) {
|
||||
|
@ -309,6 +310,7 @@ class CoreRequestBuilder {
|
|||
->selectAlias('ca.name', 'cacheactor_name')
|
||||
->selectAlias('ca.summary', 'cacheactor_summary')
|
||||
->selectAlias('ca.public_key', 'cacheactor_public_key')
|
||||
->selectAlias('ca.source', 'cacheactor_source')
|
||||
->selectAlias('ca.creation', 'cacheactor_creation')
|
||||
->leftJoin(
|
||||
$this->defaultSelectAlias, CoreRequestBuilder::TABLE_CACHE_ACTORS, 'ca',
|
||||
|
|
|
@ -63,7 +63,6 @@ class NotesRequest extends NotesRequestBuilder {
|
|||
* @throws \Exception
|
||||
*/
|
||||
public function save(Note $note): int {
|
||||
|
||||
try {
|
||||
$qb = $this->getNotesInsertSql();
|
||||
$qb->setValue('id', $qb->createNamedParameter($note->getId()))
|
||||
|
@ -88,7 +87,11 @@ class NotesRequest extends NotesRequestBuilder {
|
|||
->setValue('published', $qb->createNamedParameter($note->getPublished()))
|
||||
->setValue('attributed_to', $qb->createNamedParameter($note->getAttributedTo()))
|
||||
->setValue('in_reply_to', $qb->createNamedParameter($note->getInReplyTo()))
|
||||
->setValue('creation', $qb->createNamedParameter(new \DateTime('now'), IQueryBuilder::PARAM_DATE));
|
||||
->setValue('source', $qb->createNamedParameter($note->getSource()))
|
||||
->setValue(
|
||||
'creation',
|
||||
$qb->createNamedParameter(new \DateTime('now'), IQueryBuilder::PARAM_DATE)
|
||||
);
|
||||
$qb->execute();
|
||||
|
||||
return $qb->getLastInsertId();
|
||||
|
|
|
@ -78,7 +78,7 @@ class NotesRequestBuilder extends CoreRequestBuilder {
|
|||
/** @noinspection PhpMethodParametersCountMismatchInspection */
|
||||
$qb->select(
|
||||
'sn.id', 'sn.to', 'sn.to_array', 'sn.cc', 'sn.bcc', 'sn.content', 'sn.summary',
|
||||
'sn.published', 'sn.attributed_to', 'sn.in_reply_to', 'sn.creation'
|
||||
'sn.published', 'sn.attributed_to', 'sn.in_reply_to', 'sn.source', 'sn.creation'
|
||||
)
|
||||
->from(self::TABLE_SERVER_NOTES, 'sn');
|
||||
|
||||
|
|
|
@ -112,6 +112,10 @@ abstract class ACore implements JsonSerializable {
|
|||
/** @var bool */
|
||||
private $completeDetails = false;
|
||||
|
||||
/** @var string */
|
||||
private $source = '';
|
||||
|
||||
|
||||
/**
|
||||
* Core constructor.
|
||||
*
|
||||
|
@ -155,7 +159,9 @@ abstract class ACore implements JsonSerializable {
|
|||
* @return ACore
|
||||
*/
|
||||
public function setType(string $type): ACore {
|
||||
$this->type = $type;
|
||||
if ($type !== '') {
|
||||
$this->type = $type;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
@ -706,11 +712,31 @@ abstract class ACore implements JsonSerializable {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getSource(): string {
|
||||
return $this->source;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $source
|
||||
*
|
||||
* @return ACore
|
||||
*/
|
||||
public function setSource(string $source): ACore {
|
||||
$this->source = $source;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*/
|
||||
public function import(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, []));
|
||||
|
@ -718,6 +744,7 @@ abstract class ACore implements JsonSerializable {
|
|||
$this->setPublished($this->get('published', $data, ''));
|
||||
$this->setActorId($this->get('actor', $data, ''));
|
||||
$this->setObjectId($this->get('object', $data, ''));
|
||||
$this->setSource($this->get('source', $data, ''));
|
||||
}
|
||||
|
||||
|
||||
|
@ -766,6 +793,10 @@ abstract class ACore implements JsonSerializable {
|
|||
$this->addEntry('object', $this->getObjectId());
|
||||
}
|
||||
|
||||
if ($this->isCompleteDetails()) {
|
||||
$this->addEntry('source', $this->getSource());
|
||||
}
|
||||
|
||||
return $this->getEntries();
|
||||
}
|
||||
|
||||
|
|
|
@ -352,15 +352,11 @@ class Person extends ACore implements JsonSerializable {
|
|||
*/
|
||||
public function setLocal(bool $local): Person {
|
||||
$this->local = $local;
|
||||
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*/
|
||||
|
@ -377,12 +373,12 @@ class Person extends ACore implements JsonSerializable {
|
|||
->setFollowing($this->get('following', $data, ''))
|
||||
->setSharedInbox($this->get('shared_inbox', $data, ''))
|
||||
->setFeatured($this->get('featured', $data, ''))
|
||||
->setLocal(($this->get('local', $data, '') === '1'))
|
||||
->setLocal(($this->getInt('local', $data, 0) === 1))
|
||||
->setCreation($this->getInt('creation', $data, 0));
|
||||
|
||||
if ($this->getPreferredUsername() === '') {
|
||||
$this->setType('Invalid');
|
||||
}
|
||||
// if ($this->getPreferredUsername() === '') {
|
||||
// $this->setType('Invalid');
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
@ -411,7 +407,7 @@ class Person extends ACore implements JsonSerializable {
|
|||
'owner' => $this->getId(),
|
||||
'publicKeyPem' => $this->getPublicKey()
|
||||
],
|
||||
'local' => $this->isLocal()
|
||||
'local' => $this->isLocal()
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ class PersonService implements ICoreService {
|
|||
}
|
||||
|
||||
try {
|
||||
$actor->setSource(json_encode($actor, JSON_UNESCAPED_SLASHES));
|
||||
$this->save($actor, true);
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
|
@ -125,6 +126,7 @@ class PersonService implements ICoreService {
|
|||
$object = $this->instanceService->retrieveObject($id);
|
||||
$actor = new Person();
|
||||
$actor->import($object);
|
||||
$actor->setSource(json_encode($object, JSON_UNESCAPED_SLASHES));
|
||||
|
||||
$actor->setPreferredUsername($this->get('preferredUsername', $object, ''));
|
||||
$actor->setPublicKey($this->get('publicKey.publicKeyPem', $object));
|
||||
|
|
|
@ -109,6 +109,7 @@ class ImportService {
|
|||
}
|
||||
|
||||
$item->import($data);
|
||||
$item->setSource(json_encode($data, JSON_UNESCAPED_SLASHES));
|
||||
|
||||
try {
|
||||
$object = $this->createItem($this->getArray('object', $data, []), $item);
|
||||
|
|
Ładowanie…
Reference in New Issue