summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2019-05-29 22:44:02 -0100
committerGitHub <noreply@github.com>2019-05-29 22:44:02 -0100
commitb8d1546be7d05b93eb7657c12ee8564bd043334b (patch)
treebd306cc1c53580a7aff33e7a9a8e15d29a60d5c4 /lib
parent202402092fcbfba891878f650db1d64efce987c5 (diff)
parente2b9ed22e5e09d67318319bfda5ac6cbd2d33170 (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.php16
-rw-r--r--lib/Db/StreamRequest.php2
-rw-r--r--lib/Db/StreamRequestBuilder.php18
-rw-r--r--lib/Model/ActivityPub/Stream.php6
-rw-r--r--lib/Model/StreamAction.php17
-rw-r--r--lib/Service/StreamQueueService.php2
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;