diff options
author | Maxence Lange <maxence@artificial-owl.com> | 2019-05-29 22:44:02 -0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-29 22:44:02 -0100 |
commit | b8d1546be7d05b93eb7657c12ee8564bd043334b (patch) | |
tree | bd306cc1c53580a7aff33e7a9a8e15d29a60d5c4 /lib | |
parent | 202402092fcbfba891878f650db1d64efce987c5 (diff) | |
parent | e2b9ed22e5e09d67318319bfda5ac6cbd2d33170 (diff) |
Merge pull request #546 from nextcloud/boosts
display boosted posts with an according indication
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 16 | ||||
-rw-r--r-- | lib/Db/StreamRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/StreamRequestBuilder.php | 18 | ||||
-rw-r--r-- | lib/Model/ActivityPub/Stream.php | 6 | ||||
-rw-r--r-- | lib/Model/StreamAction.php | 17 | ||||
-rw-r--r-- | lib/Service/StreamQueueService.php | 2 |
6 files changed, 46 insertions, 15 deletions
diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index 5c1c9f59..a8cb3009 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -731,8 +731,12 @@ class CoreRequestBuilder { ->selectAlias('sa.stream_id', 'streamaction_stream_id') ->selectAlias('sa.values', 'streamaction_values'); + $orX = $expr->orX(); + $orX->add($expr->eq($func->lower($pf . '.id'), $func->lower('sa.stream_id'))); + $orX->add($expr->eq($func->lower($pf . '.object_id'), $func->lower('sa.stream_id'))); + $andX = $expr->andX(); - $andX->add($expr->eq($func->lower($pf . '.id'), $func->lower('sa.stream_id'))); + $andX->add($orX); $andX->add( $expr->eq( $func->lower('sa.actor_id'), @@ -751,7 +755,6 @@ class CoreRequestBuilder { * @param array $data * * @return StreamAction - * @throws InvalidResourceException */ protected function parseStreamActionsLeftJoin(array $data): StreamAction { $new = []; @@ -763,10 +766,11 @@ class CoreRequestBuilder { $action = new StreamAction(); $action->importFromDatabase($new); - - if ($action->getId() === 0) { - throw new InvalidResourceException(); - } + $action->setDefaultValues( + [ + 'boosted' => false + ] + ); return $action; } diff --git a/lib/Db/StreamRequest.php b/lib/Db/StreamRequest.php index 592a3389..745b30d3 100644 --- a/lib/Db/StreamRequest.php +++ b/lib/Db/StreamRequest.php @@ -524,7 +524,7 @@ class StreamRequest extends StreamRequestBuilder { } $cache = '[]'; - if ($stream->gotCache()) { + if ($stream->hasCache()) { $cache = json_encode($stream->getCache(), JSON_UNESCAPED_SLASHES); } diff --git a/lib/Db/StreamRequestBuilder.php b/lib/Db/StreamRequestBuilder.php index 1b5b68c6..910d4641 100644 --- a/lib/Db/StreamRequestBuilder.php +++ b/lib/Db/StreamRequestBuilder.php @@ -30,6 +30,7 @@ declare(strict_types=1); namespace OCA\Social\Db; +use daita\MySmallPhpTools\Exceptions\CacheItemNotFoundException; use daita\MySmallPhpTools\Traits\TArrayTools; use Doctrine\DBAL\Query\QueryBuilder; use OCA\Social\AP; @@ -415,12 +416,21 @@ class StreamRequestBuilder extends CoreRequestBuilder { } catch (InvalidResourceException $e) { } - try { - $action = $this->parseStreamActionsLeftJoin($data); - $item->setAction($action); - } catch (InvalidResourceException $e) { + $action = $this->parseStreamActionsLeftJoin($data); + if ($item->hasCache()) { + $cache = $item->getCache(); + try { + $cachedItem = $cache->getItem($action->getStreamId()); + $cachedObject = $cachedItem->getObject(); + $cachedObject['action'] = $action; + $cachedItem->setContent(json_encode($cachedObject)); + $cache->updateItem($cachedItem, false); + } catch (CacheItemNotFoundException $e) { + } } + $item->setAction($action); + return $item; } diff --git a/lib/Model/ActivityPub/Stream.php b/lib/Model/ActivityPub/Stream.php index d961f78c..8aa2f3c7 100644 --- a/lib/Model/ActivityPub/Stream.php +++ b/lib/Model/ActivityPub/Stream.php @@ -231,7 +231,7 @@ class Stream extends ACore implements JsonSerializable { /** * @return bool */ - public function gotCache(): bool { + public function hasCache(): bool { return ($this->cache !== null); } @@ -257,7 +257,7 @@ class Stream extends ACore implements JsonSerializable { public function addCacheItem(string $url): Stream { $cacheItem = new CacheItem($url); - if (!$this->gotCache()) { + if (!$this->hasCache()) { $this->setCache(new Cache()); } @@ -376,7 +376,7 @@ class Stream extends ACore implements JsonSerializable { $result, [ 'action' => ($this->hasAction()) ? $this->getAction() : [], - 'cache' => ($this->gotCache()) ? $this->getCache() : '', + 'cache' => ($this->hasCache()) ? $this->getCache() : '', 'publishedTime' => $this->getPublishedTime() ] ); diff --git a/lib/Model/StreamAction.php b/lib/Model/StreamAction.php index eb6c3098..4235960d 100644 --- a/lib/Model/StreamAction.php +++ b/lib/Model/StreamAction.php @@ -210,6 +210,23 @@ class StreamAction implements JsonSerializable { /** + * @param array $default + * + * @return StreamAction + */ + public function setDefaultValues(array $default): StreamAction { + $keys = array_keys($default); + foreach ($keys as $k) { + if (!array_key_exists($k, $this->values)) { + $this->values[$k] = $default[$k]; + } + } + + return $this; + } + + + /** * @param array $data */ public function importFromDatabase(array $data) { diff --git a/lib/Service/StreamQueueService.php b/lib/Service/StreamQueueService.php index a3308eca..ab14666b 100644 --- a/lib/Service/StreamQueueService.php +++ b/lib/Service/StreamQueueService.php @@ -177,7 +177,7 @@ class StreamQueueService { return; } - if (!$stream->gotCache()) { + if (!$stream->hasCache()) { $this->deleteCache($queue); return; |