sforkowany z mirror/social
commit
eea6d411e7
|
@ -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', '')
|
||||
|
|
|
@ -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'
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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()))
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
|
|
|
@ -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()))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
Plik diff jest za duży
Load Diff
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Ładowanie…
Reference in New Issue