Merge pull request #1530 from nextcloud/eng/noid/remove-chunk

remove 'chunk'
master
Carl Schwan 2022-11-21 10:26:49 +01:00 zatwierdzone przez GitHub
commit eea6d411e7
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
27 zmienionych plików z 312 dodań i 1174 usunięć

Wyświetl plik

@ -58,8 +58,8 @@ class Fediverse extends Base {
parent::configure();
$this->setName('social:fediverse')
->addOption(
'type', 't', InputArgument::OPTIONAL,
'Change the type of access management', ''
'type', 't', InputArgument::OPTIONAL,
'Change the type of access management', ''
)
->addArgument('action', InputArgument::OPTIONAL, 'add/remove/test address', '')
->addArgument('address', InputArgument::OPTIONAL, 'address/host', '')

Wyświetl plik

@ -119,10 +119,10 @@ class MigrateAlpha3 extends Base {
$this->setName('social:migrate:alpha3')
->setDescription('Trying to migrate old data to Alpha3')
->addOption(
'remove-migrated-tables', '', InputOption::VALUE_NONE, 'Remove old table once copy is done'
'remove-migrated-tables', '', InputOption::VALUE_NONE, 'Remove old table once copy is done'
)
->addOption(
'force-remove-old-tables', '', InputOption::VALUE_NONE, 'Force remove old tables'
'force-remove-old-tables', '', InputOption::VALUE_NONE, 'Force remove old tables'
);
}

Wyświetl plik

@ -96,18 +96,18 @@ class NoteCreate extends Base {
parent::configure();
$this->setName('social:note:create')
->addOption(
'replyTo', 'r', InputOption::VALUE_OPTIONAL, 'in reply to an existing thread'
'replyTo', 'r', InputOption::VALUE_OPTIONAL, 'in reply to an existing thread'
)
->addOption(
'to', 't', InputOption::VALUE_OPTIONAL, 'mentioning people'
'to', 't', InputOption::VALUE_OPTIONAL, 'mentioning people'
)
->addOption(
'type', 'y', InputOption::VALUE_OPTIONAL,
'type: public (default), followers, unlisted, direct'
'type', 'y', InputOption::VALUE_OPTIONAL,
'type: public (default), followers, unlisted, direct'
)
->addOption(
'hashtag', 'g', InputOption::VALUE_OPTIONAL,
'hashtag, without the leading #'
'hashtag', 'g', InputOption::VALUE_OPTIONAL,
'hashtag, without the leading #'
)
->addArgument('user_id', InputArgument::REQUIRED, 'userId of the author')
->addArgument('content', InputArgument::REQUIRED, 'content of the post')

Wyświetl plik

@ -73,7 +73,7 @@ class QueueStatus extends Base {
parent::configure();
$this->setName('social:queue:status')
->addOption(
'token', 't', InputOption::VALUE_OPTIONAL, 'token of a request'
'token', 't', InputOption::VALUE_OPTIONAL, 'token of a request'
)
->setDescription('Return status on the request queue');
}

Wyświetl plik

@ -1,70 +0,0 @@
<?php
declare(strict_types=1);
/**
* Nextcloud - Social Support
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Social\Cron;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCA\Social\Service\ConfigService;
use OCP\AppFramework\QueryException;
/**
* Class Queue
*
* @package OCA\Social\Cron
*/
class Chunk extends TimedJob {
private ConfigService $configService;
public function __construct(ITimeFactory $time, ConfigService $configService) {
parent::__construct($time);
$this->setInterval(12 * 3600); // 12 hours
$this->configService = $configService;
}
/**
* @param mixed $argument
*
* @throws QueryException
*/
protected function run($argument) {
$size = (int)$this->configService->getAppValue(ConfigService::DATABASE_CHUNK_SIZE);
$this->morphChunks($size);
}
/**
* @param int $size
*/
private function morphChunks(int $size): void {
}
}

Wyświetl plik

@ -53,13 +53,13 @@ class ActorsRequest extends ActorsRequestBuilder {
->setValue('summary', $qb->createNamedParameter($actor->getSummary()))
->setValue('avatar_version', $qb->createNamedParameter($actor->getAvatarVersion()))
->setValue(
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
)
->setValue('public_key', $qb->createNamedParameter($actor->getPublicKey()))
->setValue('private_key', $qb->createNamedParameter($actor->getPrivateKey()))
->setValue(
'creation',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
'creation',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
);
$qb->executeStatement();

Wyświetl plik

@ -121,7 +121,7 @@ class ActorsRequestBuilder extends CoreRequestBuilder {
->setLocal(true)
->setAvatarVersion($this->getInt('avatar_version', $data, -1))
->setAccount(
$actor->getPreferredUsername() . '@' . $this->configService->getSocialAddress()
$actor->getPreferredUsername() . '@' . $this->configService->getSocialAddress()
);
$actor->setUrlSocial($root)
->setUrl($actor->getId());

Wyświetl plik

@ -59,7 +59,7 @@ class CacheActorsRequest extends CacheActorsRequestBuilder {
->setValue('featured', $qb->createNamedParameter($actor->getFeatured()))
->setValue('url', $qb->createNamedParameter($actor->getUrl()))
->setValue(
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
)
->setValue('name', $qb->createNamedParameter($actor->getName()))
->setValue('summary', $qb->createNamedParameter($actor->getSummary()))
@ -112,7 +112,7 @@ class CacheActorsRequest extends CacheActorsRequestBuilder {
->set('featured', $qb->createNamedParameter($actor->getFeatured()))
->set('url', $qb->createNamedParameter($actor->getUrl()))
->set(
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
'preferred_username', $qb->createNamedParameter($actor->getPreferredUsername())
)
->set('name', $qb->createNamedParameter($actor->getName()))
->set('summary', $qb->createNamedParameter($actor->getSummary()))

Wyświetl plik

@ -77,7 +77,7 @@ class CacheActorsRequestBuilder extends CoreRequestBuilder {
/** @noinspection PhpMethodParametersCountMismatchInspection */
$qb->select(
'ca.nid', 'ca.id', 'ca.account', 'ca.following', 'ca.followers', 'ca.inbox', 'ca.shared_inbox',
'ca.id', 'ca.account', 'ca.following', 'ca.followers', 'ca.inbox', 'ca.shared_inbox',
'ca.outbox', 'ca.featured', 'ca.url', 'ca.type', 'ca.preferred_username', 'ca.name', 'ca.summary',
'ca.public_key', 'ca.local', 'ca.details', 'ca.source', 'ca.creation'
)

Wyświetl plik

@ -56,7 +56,7 @@ class ClientRequest extends ClientRequestBuilder {
$qb->setValue('app_name', $qb->createNamedParameter($client->getAppName()))
->setValue('app_website', $qb->createNamedParameter($client->getAppWebsite()))
->setValue(
'app_redirect_uris', $qb->createNamedParameter(json_encode($client->getAppRedirectUris()))
'app_redirect_uris', $qb->createNamedParameter(json_encode($client->getAppRedirectUris()))
)
->setValue('app_client_id', $qb->createNamedParameter($client->getAppClientId()))
->setValue('app_client_secret', $qb->createNamedParameter($client->getAppClientSecret()))

Wyświetl plik

@ -48,6 +48,7 @@ use OCA\Social\Service\MiscService;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IURLGenerator;
use OCP\Server;
use Psr\Log\LoggerInterface;
/**
@ -56,26 +57,26 @@ use Psr\Log\LoggerInterface;
* @package OCA\Social\Db
*/
class CoreRequestBuilder {
public const TABLE_REQUEST_QUEUE = 'social_3_req_queue';
public const TABLE_INSTANCE = 'social_3_instance';
public const TABLE_REQUEST_QUEUE = 'social_req_queue';
public const TABLE_INSTANCE = 'social_instance';
public const TABLE_ACTORS = 'social_3_actor';
public const TABLE_STREAM = 'social_3_stream';
public const TABLE_STREAM_DEST = 'social_3_stream_dest';
public const TABLE_STREAM_TAGS = 'social_3_stream_tag';
public const TABLE_STREAM_QUEUE = 'social_3_stream_queue';
public const TABLE_STREAM_ACTIONS = 'social_3_stream_act';
public const TABLE_ACTORS = 'social_actor';
public const TABLE_STREAM = 'social_stream';
public const TABLE_STREAM_DEST = 'social_stream_dest';
public const TABLE_STREAM_TAGS = 'social_stream_tag';
public const TABLE_STREAM_QUEUE = 'social_stream_queue';
public const TABLE_STREAM_ACTIONS = 'social_stream_act';
public const TABLE_HASHTAGS = 'social_3_hashtag';
public const TABLE_FOLLOWS = 'social_3_follow';
public const TABLE_ACTIONS = 'social_3_action';
public const TABLE_HASHTAGS = 'social_hashtag';
public const TABLE_FOLLOWS = 'social_follow';
public const TABLE_ACTIONS = 'social_action';
public const TABLE_CACHE_ACTORS = 'social_3_cache_actor';
public const TABLE_CACHE_DOCUMENTS = 'social_3_cache_doc';
public const TABLE_CACHE_ACTORS = 'social_cache_actor';
public const TABLE_CACHE_DOCUMENTS = 'social_cache_doc';
public const TABLE_CLIENT = 'social_3_client';
public const TABLE_CLIENT_AUTH = 'social_3_client_auth';
public const TABLE_CLIENT_TOKEN = 'social_3_client_token';
public const TABLE_CLIENT = 'social_client';
public const TABLE_CLIENT_AUTH = 'social_client_auth';
public const TABLE_CLIENT_TOKEN = 'social_client_token';
private array $tables = [
@ -105,7 +106,10 @@ class CoreRequestBuilder {
protected ?string $defaultSelectAlias = null;
public function __construct(
IDBConnection $connection, LoggerInterface $logger, IURLGenerator $urlGenerator, ConfigService $configService,
IDBConnection $connection,
LoggerInterface $logger,
IURLGenerator $urlGenerator,
ConfigService $configService,
MiscService $miscService
) {
$this->dbConnection = $connection;
@ -736,8 +740,7 @@ class CoreRequestBuilder {
$pf = (($alias === '') ? $this->defaultSelectAlias : $alias);
$qb->from(self::TABLE_CACHE_ACTORS, $pf);
$qb->selectAlias($pf . '.nid', 'cacheactor_nid')
->selectAlias($pf . '.id', 'cacheactor_id')
$qb->selectAlias($pf . '.id', 'cacheactor_id')
->selectAlias($pf . '.type', 'cacheactor_type')
->selectAlias($pf . '.account', 'cacheactor_account')
->selectAlias($pf . '.following', 'cacheactor_following')
@ -777,8 +780,7 @@ class CoreRequestBuilder {
$pf = ($alias === '') ? $this->defaultSelectAlias : $alias;
$qb->selectAlias('ca.nid', 'cacheactor_nid')
->selectAlias('ca.id', 'cacheactor_id')
$qb->selectAlias('ca.id', 'cacheactor_id')
->selectAlias('ca.type', 'cacheactor_type')
->selectAlias('ca.account', 'cacheactor_account')
->selectAlias('ca.following', 'cacheactor_following')
@ -1052,8 +1054,8 @@ class CoreRequestBuilder {
->selectAlias($prefix . '_f.follow_id', $prefix . '_follow_id')
->selectAlias($prefix . '_f.creation', $prefix . '_creation')
->leftJoin(
$this->defaultSelectAlias, CoreRequestBuilder::TABLE_FOLLOWS, $prefix . '_f',
$andX
$this->defaultSelectAlias, CoreRequestBuilder::TABLE_FOLLOWS, $prefix . '_f',
$andX
);
}
@ -1129,7 +1131,7 @@ class CoreRequestBuilder {
*/
public function emptyAll() {
/** @var ISchemaWrapper|SchemaWrapper $schema */
$schema = new SchemaWrapper($this->dbConnection);
$schema = new SchemaWrapper(Server::get(OC\DB\Connection::class));
foreach ($this->tables as $table) {
if ($schema->hasTable($table)) {
$qb = $this->dbConnection->getQueryBuilder();
@ -1145,7 +1147,7 @@ class CoreRequestBuilder {
*/
public function uninstallSocialTables() {
/** @var ISchemaWrapper|SchemaWrapper $schema */
$schema = new SchemaWrapper($this->dbConnection);
$schema = new SchemaWrapper(Server::get(OC\DB\Connection::class));
foreach ($this->tables as $table) {
if ($schema->hasTable($table)) {
$schema->dropTable($table);

Wyświetl plik

@ -66,9 +66,9 @@ class RequestQueueRequest extends RequestQueueRequestBuilder {
->setValue('author', $qb->createNamedParameter($queue->getAuthor()))
->setValue('activity', $qb->createNamedParameter($queue->getActivity()))
->setValue(
'instance', $qb->createNamedParameter(
json_encode($queue->getInstance(), JSON_UNESCAPED_SLASHES)
)
'instance', $qb->createNamedParameter(
json_encode($queue->getInstance(), JSON_UNESCAPED_SLASHES)
)
)
->setValue('priority', $qb->createNamedParameter($queue->getPriority()))
->setValue('status', $qb->createNamedParameter($queue->getStatus()))
@ -133,8 +133,8 @@ class RequestQueueRequest extends RequestQueueRequestBuilder {
$qb = $this->getRequestQueueUpdateSql();
$qb->set('status', $qb->createNamedParameter(RequestQueue::STATUS_RUNNING))
->set(
'last',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
'last',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
);
$this->limitToId($qb, $queue->getId());
$this->limitToStatus($qb, RequestQueue::STATUS_STANDBY);

Wyświetl plik

@ -34,7 +34,6 @@ namespace OCA\Social\Db;
use OCA\Social\Tools\Db\ExtendedQueryBuilder;
use OC\SystemConfig;
use OCA\Social\Model\ActivityPub\Actor\Person;
use OCP\DB\QueryBuilder\ICompositeExpression;
use OCP\IDBConnection;
use OCP\IURLGenerator;
use Psr\Log\LoggerInterface;
@ -47,7 +46,6 @@ use Psr\Log\LoggerInterface;
class SocialCoreQueryBuilder extends ExtendedQueryBuilder {
protected IURLGenerator $urlGenerator;
private ?Person $viewer = null;
private int $chunk = 0;
public function __construct(
IDBConnection $connection, SystemConfig $systemConfig, LoggerInterface $logger, IURLGenerator $urlGenerator
@ -57,32 +55,6 @@ class SocialCoreQueryBuilder extends ExtendedQueryBuilder {
$this->urlGenerator = $urlGenerator;
}
public function setChunk(int $chunk): self {
$this->chunk = $chunk;
$this->inChunk();
return $this;
}
public function getChunk(): int {
return $this->chunk;
}
/**
* Limit the request to a chunk
*/
public function inChunk(string $alias = '', ?ICompositeExpression $expr = null): void {
if ($this->getChunk() === 0) {
return;
}
if ($expr !== null) {
$expr->add($this->exprLimitToDBFieldInt('chunk', $this->getChunk(), $alias));
return;
}
$this->limitToDBFieldInt('chunk', $this->getChunk(), $alias);
}
public function hasViewer(): bool {
return ($this->viewer !== null);

Wyświetl plik

@ -56,7 +56,6 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder {
if ($aliasDest !== '') {
$this->from(CoreRequestBuilder::TABLE_STREAM_DEST, $aliasDest);
// $this->inChunk($aliasDest);
}
if ($aliasFollowing !== '') {
$this->from(CoreRequestBuilder::TABLE_FOLLOWS, $aliasFollowing);
@ -109,8 +108,7 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder {
$this->from(CoreRequestBuilder::TABLE_CACHE_ACTORS, $pf);
}
$this->selectAlias($pf . '.nid', 'cacheactor_nid')
->selectAlias($pf . '.id', 'cacheactor_id')
$this->selectAlias($pf . '.id', 'cacheactor_id')
->selectAlias($pf . '.type', 'cacheactor_type')
->selectAlias($pf . '.account', 'cacheactor_account')
->selectAlias($pf . '.following', 'cacheactor_following')
@ -185,8 +183,8 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder {
->selectAlias('cd.error', 'cachedocument_error')
->selectAlias('cd.creation', 'cachedocument_creation')
->leftJoin(
$this->getDefaultSelectAlias(), CoreRequestBuilder::TABLE_CACHE_DOCUMENTS, 'cd',
$expr->eq($func->lower($pf . '.' . $fieldDocumentId), $func->lower('cd.id'))
$this->getDefaultSelectAlias(), CoreRequestBuilder::TABLE_CACHE_DOCUMENTS, 'cd',
$expr->eq($func->lower($pf . '.' . $fieldDocumentId), $func->lower('cd.id'))
);
}
@ -277,7 +275,6 @@ class SocialCrossQueryBuilder extends SocialCoreQueryBuilder {
$orX->add($expr->eq($alias . '.stream_id_prim', $pf . '.object_id_prim'));
$on = $expr->andX();
// $this->inChunk('sa', $on);
$viewer = $this->getViewer();
$idPrim = $this->prim($viewer->getId());

Wyświetl plik

@ -56,9 +56,9 @@ class StreamActionsRequest extends StreamActionsRequestBuilder {
->setValue('stream_id', $qb->createNamedParameter($action->getStreamId()))
->setValue('stream_id_prim', $qb->createNamedParameter($this->prim($action->getStreamId())))
->setValue(
'values', $qb->createNamedParameter(
json_encode($values, JSON_UNESCAPED_SLASHES)
)
'values', $qb->createNamedParameter(
json_encode($values, JSON_UNESCAPED_SLASHES)
)
)
->setValue('liked', $qb->createNamedParameter(($liked) ? 1 : 0))
->setValue('boosted', $qb->createNamedParameter(($boosted) ? 1 : 0))

Wyświetl plik

@ -110,8 +110,8 @@ class StreamQueueRequest extends StreamQueueRequestBuilder {
$qb = $this->getStreamQueueUpdateSql();
$qb->set('status', $qb->createNamedParameter(StreamQueue::STATUS_RUNNING))
->set(
'last',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
'last',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
);
$this->limitToId($qb, $queue->getId());
$this->limitToStatus($qb, StreamQueue::STATUS_STANDBY);

Wyświetl plik

@ -77,9 +77,9 @@ class StreamRequest extends StreamRequestBuilder {
/** @var Note $stream */
$qb->setValue('hashtags', $qb->createNamedParameter(json_encode($stream->getHashtags())))
->setValue(
'attachments', $qb->createNamedParameter(
json_encode($stream->getAttachments(), JSON_UNESCAPED_SLASHES)
)
'attachments', $qb->createNamedParameter(
json_encode($stream->getAttachments(), JSON_UNESCAPED_SLASHES)
)
);
}
@ -359,7 +359,6 @@ class StreamRequest extends StreamRequestBuilder {
*/
public function getTimelineHome(TimelineOptions $options): array {
$qb = $this->getStreamSelectSql($options->getFormat());
$qb->setChunk(1);
$qb->filterType(SocialAppNotification::TYPE);
$qb->paginate($options);
@ -396,7 +395,6 @@ class StreamRequest extends StreamRequestBuilder {
int $since = 0, int $limit = 5, int $format = Stream::FORMAT_ACTIVITYPUB
): array {
$qb = $this->getStreamSelectSql($format);
$qb->setChunk(1);
$qb->filterType(SocialAppNotification::TYPE);
$qb->limitPaginate($since, $limit);
@ -709,19 +707,19 @@ class StreamRequest extends StreamRequestBuilder {
->setValue('subtype', $qb->createNamedParameter($stream->getSubType()))
->setValue('to', $qb->createNamedParameter($stream->getTo()))
->setValue(
'to_array', $qb->createNamedParameter(
json_encode($stream->getToArray(), JSON_UNESCAPED_SLASHES)
)
'to_array', $qb->createNamedParameter(
json_encode($stream->getToArray(), JSON_UNESCAPED_SLASHES)
)
)
->setValue(
'cc', $qb->createNamedParameter(
json_encode($stream->getCcArray(), JSON_UNESCAPED_SLASHES)
)
'cc', $qb->createNamedParameter(
json_encode($stream->getCcArray(), JSON_UNESCAPED_SLASHES)
)
)
->setValue(
'bcc', $qb->createNamedParameter(
json_encode($stream->getBccArray(), JSON_UNESCAPED_SLASHES)
)
'bcc', $qb->createNamedParameter(
json_encode($stream->getBccArray(), JSON_UNESCAPED_SLASHES)
)
)
->setValue('content', $qb->createNamedParameter($stream->getContent()))
->setValue('summary', $qb->createNamedParameter($stream->getSummary()))
@ -737,13 +735,13 @@ class StreamRequest extends StreamRequestBuilder {
->setValue('details', $qb->createNamedParameter(json_encode($stream->getDetailsAll())))
->setValue('cache', $qb->createNamedParameter($cache))
->setValue(
'filter_duplicate',
$qb->createNamedParameter(($stream->isFilterDuplicate()) ? '1' : '0')
'filter_duplicate',
$qb->createNamedParameter(($stream->isFilterDuplicate()) ? '1' : '0')
)
->setValue(
'instances', $qb->createNamedParameter(
json_encode($stream->getInstancePaths(), JSON_UNESCAPED_SLASHES)
)
'instances', $qb->createNamedParameter(
json_encode($stream->getInstancePaths(), JSON_UNESCAPED_SLASHES)
)
)
->setValue('local', $qb->createNamedParameter(($stream->isLocal()) ? '1' : '0'));
@ -754,8 +752,8 @@ class StreamRequest extends StreamRequestBuilder {
'published_time', $qb->createNamedParameter($dTime, IQueryBuilder::PARAM_DATE)
)
->setValue(
'creation',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
'creation',
$qb->createNamedParameter(new DateTime('now'), IQueryBuilder::PARAM_DATE)
);
} catch (Exception $e) {
}

Wyświetl plik

@ -92,10 +92,10 @@ class StreamRequestBuilder extends CoreRequestBuilder {
/** @noinspection PhpMethodParametersCountMismatchInspection */
$qb->selectDistinct('s.id')
->addSelect(
's.nid', 's.type', 's.subtype', 's.to', 's.to_array', 's.cc', 's.bcc', 's.content',
's.summary', 's.attachments', 's.published', 's.published_time', 's.cache',
's.object_id', 's.attributed_to', 's.in_reply_to', 's.source', 's.local',
's.instances', 's.creation', 's.filter_duplicate', 's.details', 's.hashtags'
's.nid', 's.type', 's.subtype', 's.to', 's.to_array', 's.cc', 's.bcc', 's.content',
's.summary', 's.attachments', 's.published', 's.published_time', 's.cache',
's.object_id', 's.attributed_to', 's.in_reply_to', 's.source', 's.local',
's.instances', 's.creation', 's.filter_duplicate', 's.details', 's.hashtags'
)
->from(self::TABLE_STREAM, 's');

Wyświetl plik

@ -1,74 +0,0 @@
<?php
declare(strict_types=1);
/**
* Nextcloud - Social Support
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Social\Migration;
use OCA\Social\Service\CheckService;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
/**
* Class CheckInstallation
*
* @package OCA\Social\Migration
*/
class CheckInstallation implements IRepairStep {
protected CheckService $checkService;
/**
* CheckInstallation constructor.
*
* @param CheckService $checkService
*/
public function __construct(CheckService $checkService) {
$this->checkService = $checkService;
}
/**
* Returns the step's name
*
* @return string
* @since 9.1.0
*/
public function getName() {
return 'Check the installation of the Social app.';
}
/**
* @param IOutput $output
*/
public function run(IOutput $output) {
$this->checkService->checkInstallationStatus(true);
}
}

Wyświetl plik

@ -1,96 +0,0 @@
<?php
declare(strict_types=1);
/**
* Nextcloud - Social Support
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Social\Migration;
use Closure;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\SchemaException;
use Exception;
use OCP\DB\ISchemaWrapper;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Class Version0003Date20200823023910
*
* @package OCA\Social\Migration
*/
class Version0003Date20200823023900 extends SimpleMigrationStep {
private IDBConnection $connection;
/**
* @param IDBConnection $connection
*/
public function __construct(IDBConnection $connection) {
$this->connection = $connection;
}
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
*
* @return ISchemaWrapper
* @throws SchemaException
* @throws DBALException
*/
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
if ($schema->hasTable('social_3_cache_actor')) {
$table = $schema->getTable('social_3_cache_actor');
if ($table->hasPrimaryKey()) {
$kc = $table->getPrimaryKeyColumns();
if (count($kc) === 1 && $kc[0] === 'id_prim') {
$table->dropPrimaryKey();
}
}
}
return $schema;
}
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
*
* @throws Exception
*/
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
}
}

Wyświetl plik

@ -1,451 +0,0 @@
<?php
declare(strict_types=1);
/**
* Nextcloud - Social Support
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Social\Migration;
use Closure;
use Doctrine\DBAL\Schema\SchemaException;
use Doctrine\DBAL\Types\Type;
use Exception;
use OCP\DB\ISchemaWrapper;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Class Version0003Date20200823023911
*
* @package OCA\Social\Migration
*/
class Version0003Date20200823023911 extends SimpleMigrationStep {
private IDBConnection $connection;
/**
* @param IDBConnection $connection
*/
public function __construct(IDBConnection $connection) {
$this->connection = $connection;
}
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
*
* @return ISchemaWrapper
* @throws SchemaException
*/
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options
): ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$this->fixStreamNid($schema);
$this->fixCacheActorNid($schema);
$this->createClient($schema);
$this->createInstance($schema);
$this->addChunkToTable($schema, 'social_3_stream', '');
$this->addChunkToTable($schema, 'social_3_stream_act', '_act');
$this->addChunkToTable($schema, 'social_3_stream_dest', '_dest');
return $schema;
}
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
*
* @throws Exception
*/
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
$qb = $this->connection->getQueryBuilder();
$qb->select('*')
->from('social_3_stream')
->orderBy('creation', 'asc');
$result = $qb->execute();
$nid = 0;
while ($row = $result->fetch()) {
$nid++;
if (is_int($row['nid']) and $row['nid'] > 0) {
continue;
}
$update = $this->connection->getQueryBuilder();
$expr = $update->expr();
$update->update('social_3_stream');
$update->set('nid', $update->createNamedParameter($nid));
$update->where($expr->eq('id_prim', $update->createNamedParameter($row['id_prim'])));
$update->execute();
}
}
/**
* @param ISchemaWrapper $schema
*/
private function fixStreamNid(ISchemaWrapper $schema) {
try {
$table = $schema->getTable('social_3_stream');
} catch (SchemaException $e) {
return;
}
if ($table->hasColumn('nid')) {
return;
}
$table->addColumn(
'nid', 'bigint',
[
'length' => 11,
'unsigned' => true,
'notnull' => false,
]
);
}
/**
* @param ISchemaWrapper $schema
*/
private function fixCacheActorNid(ISchemaWrapper $schema) {
try {
$table = $schema->getTable('social_3_cache_actor');
} catch (SchemaException $e) {
return;
}
if ($table->hasColumn('nid')) {
return;
}
$table->addColumn(
'nid', 'bigint',
[
'autoincrement' => true,
'length' => 11,
'unsigned' => true,
'customSchemaOptions' => [
'unique' => true
]
]
);
$table->addUniqueIndex(['id_prim']);
}
/**
* @param ISchemaWrapper $schema
*/
private function createClient(ISchemaWrapper $schema) {
if ($schema->hasTable('social_3_client')) {
return;
}
$table = $schema->createTable('social_3_client');
$table->addColumn(
'id', 'integer',
[
'autoincrement' => true,
'notnull' => true,
'length' => 7,
'unsigned' => true,
]
);
$table->addColumn(
'app_name', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'app_website', 'string',
[
'notnull' => false,
'length' => 255,
'default' => ''
]
);
$table->addColumn(
'app_redirect_uris', 'text',
[
'notnull' => false,
'default' => ''
]
);
$table->addColumn(
'app_client_id', 'string',
[
'notnull' => false,
'length' => 63,
'default' => ''
]
);
$table->addColumn(
'app_client_secret', 'string',
[
'notnull' => false,
'length' => 63,
'default' => ''
]
);
$table->addColumn(
'app_scopes', 'text',
[
'notnull' => false
]
);
$table->addColumn(
'auth_scopes', 'text',
[
'notnull' => false
]
);
$table->addColumn(
'auth_account', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'auth_user_id', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'auth_code', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'token', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'last_update', 'datetime',
[
'notnull' => false,
]
);
$table->addColumn(
'creation', 'datetime',
[
'notnull' => false,
]
);
$table->setPrimaryKey(['id']);
$table->addUniqueIndex(['auth_code', 'token', 'app_client_id', 'app_client_secret']);
}
/**
* @param ISchemaWrapper $schema
*/
private function createInstance(ISchemaWrapper $schema) {
if ($schema->hasTable('social_3_instance')) {
return;
}
$table = $schema->createTable('social_3_instance');
$table->addColumn(
'local', 'smallint',
[
'notnull' => false,
'length' => 1,
'default' => 0,
'unsigned' => true
]
);
$table->addColumn(
'uri', 'string',
[
'notnull' => false,
'length' => 255,
]
);
$table->addColumn(
'title', 'string',
[
'notnull' => false,
'length' => 255,
'default' => ''
]
);
$table->addColumn(
'version', 'string',
[
'notnull' => false,
'length' => 31,
'default' => ''
]
);
$table->addColumn(
'short_description', 'text',
[
'notnull' => false,
'default' => ''
]
);
$table->addColumn(
'description', 'text',
[
'notnull' => false,
'default' => ''
]
);
$table->addColumn(
'email', 'string',
[
'notnull' => false,
'length' => 255,
'default' => ''
]
);
$table->addColumn(
'urls', 'text',
[
'notnull' => false,
'default' => '[]'
]
);
$table->addColumn(
'stats', 'text',
[
'notnull' => false,
'default' => '[]'
]
);
$table->addColumn(
'usage', 'text',
[
'notnull' => false,
'default' => '[]'
]
);
$table->addColumn(
'image', 'string',
[
'notnull' => false,
'length' => 255,
'default' => ''
]
);
$table->addColumn(
'languages', 'text',
[
'notnull' => false,
'default' => '[]'
]
);
$table->addColumn(
'contact', 'string',
[
'notnull' => false,
'length' => 127,
'default' => ''
]
);
$table->addColumn(
'account_prim', 'string',
[
'notnull' => false,
'length' => 128,
'default' => ''
]
);
$table->addColumn(
'creation', 'datetime',
[
'notnull' => false,
]
);
$table->setPrimaryKey(['uri']);
$table->addIndex(['local', 'uri', 'account_prim']);
}
/**
* @param ISchemaWrapper $schema
* @param string $tableName
* @param string $indexName
*
* @throws SchemaException
*/
private function addChunkToTable(ISchemaWrapper $schema, string $tableName, string $indexName) {
if (!$schema->hasTable($tableName)) {
return;
}
$table = $schema->getTable($tableName);
if ($table->hasColumn('chunk')) {
return;
}
$table->addColumn(
'chunk', Type::SMALLINT,
[
'default' => 1,
'length' => 1,
'unsigned' => true
]
);
if (!$table->hasIndex('chunk' . $indexName)) {
$table->addIndex(['chunk'], 'chunk' . $indexName);
}
}
}

Wyświetl plik

@ -1,86 +0,0 @@
<?php
declare(strict_types=1);
/**
* Nextcloud - Social Support
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Maxence Lange <maxence@artificial-owl.com>
* @copyright 2018, Maxence Lange <maxence@artificial-owl.com>
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Social\Migration;
use Closure;
use Doctrine\DBAL\Schema\SchemaException;
use OCP\DB\ISchemaWrapper;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Class Version0003Date20200921103342
*
* @package OCA\Social\Migration
*/
class Version0003Date20200921103342 extends SimpleMigrationStep {
private IDBConnection $connection;
/**
* @param IDBConnection $connection
*/
public function __construct(IDBConnection $connection) {
$this->connection = $connection;
}
/**
* @param IOutput $output
* @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
* @param array $options
*
* @return ISchemaWrapper
* @throws SchemaException
*/
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options
): ISchemaWrapper {
/** @var ISchemaWrapper $schema */
$schema = $schemaClosure();
$table = $schema->getTable('social_3_stream');
$column = $table->getColumn('nid');
if (!$column->getAutoincrement()) {
$table->changeColumn(
'nid', [
'autoincrement' => true, 'customSchemaOptions' => [
'unique' => true
]
]
);
}
return $schema;
}
}

Wyświetl plik

@ -55,7 +55,6 @@ class ConfigService {
public const CLOUD_URL = 'cloud_url';
public const SOCIAL_URL = 'social_url';
public const SOCIAL_ADDRESS = 'social_address';
public const DATABASE_CHUNK_SIZE = 'db_chunk_size';
public const SOCIAL_SERVICE = 'service';
public const SOCIAL_MAX_SIZE = 'max_size';
@ -78,8 +77,7 @@ class ConfigService {
self::SOCIAL_MAX_SIZE => 10,
self::SOCIAL_ACCESS_TYPE => 'all_but',
self::SOCIAL_ACCESS_LIST => '[]',
self::SOCIAL_SELF_SIGNED => '0',
self::DATABASE_CHUNK_SIZE => 10000
self::SOCIAL_SELF_SIGNED => '0'
];
public array $accessTypeList = [

Wyświetl plik

@ -71,12 +71,12 @@ trait TNCLogger {
$this->logger()
->log(
$level,
$message,
[
'app' => $this->setup('app'),
'exception' => $t
]
$level,
$message,
[
'app' => $this->setup('app'),
'exception' => $t
]
);
}
@ -111,12 +111,12 @@ trait TNCLogger {
$this->logger()
->log(
$level,
$message,
[
'app' => $this->setup('app'),
'exception' => $e
]
$level,
$message,
[
'app' => $this->setup('app'),
'exception' => $e
]
);
}

Wyświetl plik

@ -25,6 +25,7 @@
<UndefinedClass>
<errorLevel type="suppress">
<referencedClass name="OC" />
<referencedClass name="OC\DB\Connection" />
</errorLevel>
</UndefinedClass>
<UndefinedDocblockClass>
@ -33,6 +34,7 @@
<referencedClass name="Doctrine\DBAL\Schema\SchemaException" />
<referencedClass name="Doctrine\DBAL\Driver\Statement" />
<referencedClass name="Doctrine\DBAL\Schema\Table" />
<referencedClass name="OC\DB\Connection" />
</errorLevel>
</UndefinedDocblockClass>
</issueHandlers>

Wyświetl plik

@ -1,22 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.29.0@7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3">
<files psalm-version="4.26.0@6998fabb2bf528b65777bf9941920888d23c03ac">
<file src="lib/AP.php">
<InvalidScalarArgument occurrences="1">
<code>$level</code>
</InvalidScalarArgument>
</file>
<file src="lib/Migration/Version0003Date20200823023900.php">
<UndefinedDocblockClass occurrences="1">
<code>DBALException</code>
</UndefinedDocblockClass>
</file>
<file src="lib/Migration/Version0003Date20200823023911.php">
<UndefinedClass occurrences="3">
<code>SchemaException</code>
<code>SchemaException</code>
<code>Type</code>
</UndefinedClass>
</file>
<file src="lib/Model/ActivityPub/ACore.php">
<InvalidArgument occurrences="1">
<code>['a', 'p', 'span', 'br']</code>
@ -138,10 +126,4 @@
<code>HintException</code>
</UndefinedClass>
</file>
<file src="lib/Tools/Traits/TNCRequest.php">
<InvalidArgument occurrences="21">
<code>$curl</code>
</InvalidArgument>
<InvalidReturnType occurrences="1"/>
</file>
</files>