]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Widget.php
Merge pull request #13646 from annando/page-drop
[friendica.git] / src / Content / Widget.php
index ce4548d1ad02ea73ba42e39d7292f6c4414da82a..3147e99a5674ddcd52ac9de41451d5ccd8b2513d 100644 (file)
@@ -547,4 +547,53 @@ class Widget
                        $accounttype
                );
        }
+
+       /**
+        * Get a list of all channels
+        *
+        * @param string $base
+        * @param string $channelname
+        * @param integer $uid
+        * @return string
+        */
+       public static function channels(string $base, string $channelname, int $uid): string
+       {
+               $channels = [];
+
+               $enabled = DI::pConfig()->get($uid, 'system', 'enabled_timelines', []);
+
+               foreach (DI::NetworkFactory()->getTimelines('') as $channel) {
+                       if (empty($enabled) || in_array($channel->code, $enabled)) {
+                               $channels[] = ['ref' => $channel->code, 'name' => $channel->label];
+                       }
+               }
+
+               foreach (DI::ChannelFactory()->getTimelines($uid) as $channel) {
+                       if (empty($enabled) || in_array($channel->code, $enabled)) {
+                               $channels[] = ['ref' => $channel->code, 'name' => $channel->label];
+                       }
+               }
+
+               foreach (DI::userDefinedChannel()->selectByUid($uid) as $channel) {
+                       if (empty($enabled) || in_array($channel->code, $enabled)) {
+                               $channels[] = ['ref' => $channel->code, 'name' => $channel->label];
+                       }
+               }
+
+               foreach (DI::CommunityFactory()->getTimelines(true) as $community) {
+                       if (empty($enabled) || in_array($community->code, $enabled)) {
+                               $channels[] = ['ref' => $community->code, 'name' => $community->label];
+                       }
+               }
+
+               return self::filter(
+                       'channel',
+                       DI::l10n()->t('Channels'),
+                       '',
+                       '',
+                       $base,
+                       $channels,
+                       $channelname
+               );
+       }
 }