namespace Friendica\Content\Conversation\Factory;
+use Friendica\Capabilities\ICanCreateFromTableRow;
use Friendica\Content\Conversation\Collection\Timelines;
-use Friendica\Content\Conversation\Repository\Channel as ChannelRepository;
-use Friendica\Core\Config\Capability\IManageConfigValues;
-use Friendica\Core\L10n;
-use Psr\Log\LoggerInterface;
+use Friendica\Content\Conversation\Entity;
-final class UserDefinedChannel extends Timeline
+final class UserDefinedChannel extends Timeline implements ICanCreateFromTableRow
{
- public function __construct(ChannelRepository $channel, L10n $l10n, LoggerInterface $logger, IManageConfigValues $config)
- {
- parent::__construct($channel, $l10n, $logger, $config);
- }
-
- /**
- * List of available user defined channels
- *
- * @param integer $uid
- * @return Timelines
- */
- public function getForUser(int $uid): Timelines
+ public function isTimeline(string $selectedTab, int $uid): bool
{
- foreach ($this->channelRepository->selectByUid($uid) as $channel) {
- $tabs[] = $channel;
- }
-
- return new Timelines($tabs);
+ return is_numeric($selectedTab) && $uid && $this->channelRepository->existsById($selectedTab, $uid);
}
- public function isTimeline(string $selectedTab, int $uid): bool
+ public function createFromTableRow(array $row): Entity\UserDefinedChannel
{
- return is_numeric($selectedTab) && $uid && $this->channelRepository->existsById($selectedTab, $uid);
+ return new Entity\UserDefinedChannel(
+ $row['id'] ?? null,
+ $row['label'],
+ $row['description'] ?? null,
+ $row['access-key'] ?? null,
+ null,
+ $row['uid'],
+ $row['include-tags'] ?? null,
+ $row['exclude-tags'] ?? null,
+ $row['full-text-search'] ?? null,
+ $row['media-type'] ?? null,
+ $row['circle'] ?? null,
+ );
}
}