X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FWidget.php;h=1b2502d2d65e08a66de4110ca9f3cbf3acba23fd;hb=ed350e472fb66e78cd9da066dc8684784bfc6c07;hp=90373e8c3b490cc3fd5d964f52bcf397fc71b2bd;hpb=35d8b078ce84f4208f66a498ae37674fd6c67a24;p=friendica.git diff --git a/src/Content/Widget.php b/src/Content/Widget.php index 90373e8c3b..1b2502d2d6 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -1,6 +1,6 @@ get('system', 'directory'); + $global_dir = Search::getGlobalDirectory(); if (DI::config()->get('system', 'invitation_only')) { $x = intval(DI::pConfig()->get(local_user(), 'system', 'invites_remaining')); - if ($x || is_site_admin()) { + if ($x || DI::app()->isSiteAdmin()) { DI::page()['aside'] .= ''; @@ -80,7 +83,7 @@ class Widget $nv['random'] = DI::l10n()->t('Random Profile'); $nv['inv'] = DI::l10n()->t('Invite Friends'); $nv['directory'] = DI::l10n()->t('Global Directory'); - $nv['global_dir'] = $global_dir; + $nv['global_dir'] = Profile::zrl($global_dir, true); $nv['local_directory'] = DI::l10n()->t('Local Directory'); $aside = []; @@ -90,12 +93,14 @@ class Widget } /** - * Return unavailable networks + * Return unavailable networks as array + * + * @return array Unsupported networks */ public static function unavailableNetworks() { // Always hide content from these networks - $networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET]; + $networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET, Protocol::ZOT]; if (!Addon::isEnabled("discourse")) { $networks[] = Protocol::DISCOURSE; @@ -124,16 +129,7 @@ class Widget if (!Addon::isEnabled("pnut")) { $networks[] = Protocol::PNUT; } - - if (!sizeof($networks)) { - return ""; - } - - $network_filter = implode("','", $networks); - - $network_filter = "AND `network` NOT IN ('$network_filter')"; - - return $network_filter; + return $networks; } /** @@ -264,11 +260,11 @@ class Widget return ''; } - $extra_sql = self::unavailableNetworks(); + $networks = self::unavailableNetworks(); + $query = "`uid` = ? AND NOT `deleted` AND `network` != '' AND NOT `network` IN (" . substr(str_repeat("?, ", count($networks)), 0, -2) . ")"; + $condition = array_merge([$query], array_merge([local_user()], $networks)); - $r = DBA::p("SELECT DISTINCT(`network`) FROM `contact` WHERE `uid` = ? AND NOT `deleted` AND `network` != '' $extra_sql ORDER BY `network`", - local_user() - ); + $r = DBA::select('contact', ['network'], $condition, ['group_by' => ['network'], 'order' => ['network']]); $nets = array(); while ($rr = DBA::fetch($r)) { @@ -305,19 +301,10 @@ class Widget return ''; } - $saved = DI::pConfig()->get(local_user(), 'system', 'filetags'); - if (!strlen($saved)) { - return; - } - $terms = []; - foreach (FileTag::fileToArray($saved) as $savedFolderName) { + foreach (Post\Category::getArray(local_user(), Post\Category::FILE) as $savedFolderName) { $terms[] = ['ref' => $savedFolderName, 'name' => $savedFolderName]; } - - usort($terms, function ($a, $b) { - return strcmp($a['name'], $b['name']); - }); return self::filter( 'file', @@ -333,28 +320,20 @@ class Widget /** * Return categories widget * - * @param string $baseurl baseurl - * @param string $selected optional, default empty + * @param int $uid Id of the user owning the categories + * @param string $baseurl Base page URL + * @param string $selected Selected category * @return string|void * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function categories($baseurl, $selected = '') + public static function categories(int $uid, string $baseurl, string $selected = '') { - $a = DI::app(); - - $uid = intval($a->profile['uid']); - if (!Feature::isEnabled($uid, 'categories')) { return ''; } - $saved = DI::pConfig()->get($uid, 'system', 'filetags'); - if (!strlen($saved)) { - return; - } - $terms = array(); - foreach (FileTag::fileToArray($saved, 'category') as $savedFolderName) { + foreach (Post\Category::getArray($uid, Post\Category::CATEGORY) as $savedFolderName) { $terms[] = ['ref' => $savedFolderName, 'name' => $savedFolderName]; } @@ -409,7 +388,7 @@ class Widget $entries = []; foreach ($commonContacts as $contact) { $entries[] = [ - 'url' => Contact::magicLink($contact['url']), + 'url' => Contact::magicLinkByContact($contact), 'name' => $contact['name'], 'photo' => Contact::getThumb($contact), ]; @@ -429,23 +408,20 @@ class Widget /** * Insert a tag cloud widget for the present profile. * + * @param int $uid User ID * @param int $limit Max number of displayed tags. * @return string HTML formatted output. * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function tagCloud($limit = 50) + public static function tagCloud(int $uid, int $limit = 50) { - $a = DI::app(); - - $uid = intval($a->profile['uid']); - - if (!$uid || !$a->profile['url']) { + if (empty($uid)) { return ''; } if (Feature::isEnabled($uid, 'tagadelic')) { - $owner_id = Contact::getIdForURL($a->profile['url'], 0, false); + $owner_id = Contact::getPublicIdByUserId($uid); if (!$owner_id) { return ''; @@ -474,7 +450,13 @@ class Widget $ret = []; - $dthen = Item::firstPostDate($uid, $wall); + $cachekey = 'Widget::postedByYear' . $uid . '-' . (int)$wall; + $dthen = DI::cache()->get($cachekey); + if (empty($dthen)) { + $dthen = Item::firstPostDate($uid, $wall); + DI::cache()->set($cachekey, $dthen, Duration::HOUR); + } + if ($dthen) { // Set the start and end date to the beginning of the month $dnow = substr($dnow, 0, 8) . '01'; @@ -516,6 +498,7 @@ class Widget '$cutoff' => $cutoff, '$url' => $url, '$dates' => $ret, + '$showless' => DI::l10n()->t('show less'), '$showmore' => DI::l10n()->t('show more') ]); @@ -525,7 +508,7 @@ class Widget /** * Display the account types sidebar * The account type value is added as a parameter to the url - * + * * @param string $base Basepath * @param int $accounttype Acount type * @return string @@ -542,26 +525,4 @@ class Widget return self::filter('accounttype', DI::l10n()->t('Account Types'), '', DI::l10n()->t('All'), $base, $accounts, $accounttype); } - - /** - * Display the accounts sidebar - * The account type is added to the path - * - * @param string $base Basepath - * @param string $accounttype Acount type (person, organisation, news, community) - * @return string - */ - public static function accounts(string $base, string $accounttype) - { - return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/accounts.tpl'), [ - '$title' => DI::l10n()->t('Account Types'), - '$content' => $base, - '$accounttype' => ($accounttype ?? ''), - '$all' => DI::l10n()->t('All'), - '$person' => DI::l10n()->t('Persons'), - '$organisation' => DI::l10n()->t('Organisations'), - '$news' => DI::l10n()->t('News'), - '$community' => DI::l10n()->t('Forums'), - ]); - } }