X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FWidget.php;h=ce4548d1ad02ea73ba42e39d7292f6c4414da82a;hb=ddc3c0db03267d29ace272b504dc6f803fa02990;hp=a899644c3ce5a80c27ad2de9e13667e0dce320e4;hpb=e34795762d72347746bd506f253495da7d0ab329;p=friendica.git diff --git a/src/Content/Widget.php b/src/Content/Widget.php index a899644c3c..ce4548d1ad 100644 --- a/src/Content/Widget.php +++ b/src/Content/Widget.php @@ -1,6 +1,6 @@ DI::l10n()->t('Add New Contact'), @@ -56,14 +58,16 @@ class Widget /** * Return Find People widget + * + * @return string HTML code representing "People Widget" */ - public static function findPeople() + public static function findPeople(): string { - $global_dir = DI::config()->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()) { + $x = intval(DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'invites_remaining')); + if ($x || DI::app()->isSiteAdmin()) { DI::page()['aside'] .= '
'; @@ -81,7 +85,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 = []; @@ -91,12 +95,14 @@ class Widget } /** - * Return unavailable networks + * Return unavailable networks as array + * + * @return array Unsupported networks */ - public static function unavailableNetworks() + public static function unavailableNetworks(): array { // Always hide content from these networks - $networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET]; + $networks = [Protocol::PHANTOM, Protocol::FACEBOOK, Protocol::APPNET, Protocol::TWITTER, Protocol::ZOT]; if (!Addon::isEnabled("discourse")) { $networks[] = Protocol::DISCOURSE; @@ -110,8 +116,8 @@ class Widget $networks[] = Protocol::PUMPIO; } - if (!Addon::isEnabled("twitter")) { - $networks[] = Protocol::TWITTER; + if (!Addon::isEnabled("tumblr")) { + $networks[] = Protocol::TUMBLR; } if (DI::config()->get("system", "ostatus_disabled")) { @@ -125,16 +131,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; } /** @@ -159,7 +156,7 @@ class Widget * @return string * @throws \Exception */ - private static function filter($type, $title, $desc, $all, $baseUrl, array $options, $selected = null) + private static function filter(string $type, string $title, string $desc, string $all, string $baseUrl, array $options, string $selected = null): string { $queryString = parse_url($baseUrl, PHP_URL_QUERY); $queryArray = []; @@ -177,6 +174,10 @@ class Widget $baseUrl = trim($baseUrl, '?') . '?'; } + array_walk($options, function (&$value) { + $value['ref'] = rawurlencode($value['ref']); + }); + return Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/filter.tpl'), [ '$type' => $type, '$title' => $title, @@ -189,29 +190,29 @@ class Widget } /** - * Return group membership widget + * Return circle membership widget * * @param string $baseurl * @param string $selected * @return string * @throws \Exception */ - public static function groups($baseurl, $selected = '') + public static function circles(string $baseurl, string $selected = ''): string { - if (!local_user()) { + if (!DI::userSession()->getLocalUserId()) { return ''; } - $options = array_map(function ($group) { + $options = array_map(function ($circle) { return [ - 'ref' => $group['id'], - 'name' => $group['name'] + 'ref' => $circle['id'], + 'name' => $circle['name'] ]; - }, Group::getByUserId(local_user())); + }, Circle::getByUserId(DI::userSession()->getLocalUserId())); return self::filter( - 'group', - DI::l10n()->t('Groups'), + 'circle', + DI::l10n()->t('Circles'), '', DI::l10n()->t('Everyone'), $baseurl, @@ -228,9 +229,9 @@ class Widget * @return string * @throws \Exception */ - public static function contactRels($baseurl, $selected = '') + public static function contactRels(string $baseurl, string $selected = ''): string { - if (!local_user()) { + if (!DI::userSession()->getLocalUserId()) { return ''; } @@ -238,6 +239,7 @@ class Widget ['ref' => 'followers', 'name' => DI::l10n()->t('Followers')], ['ref' => 'following', 'name' => DI::l10n()->t('Following')], ['ref' => 'mutuals', 'name' => DI::l10n()->t('Mutual friends')], + ['ref' => 'nothing', 'name' => DI::l10n()->t('No relationship')], ]; return self::filter( @@ -259,19 +261,19 @@ class Widget * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function networks($baseurl, $selected = '') + public static function networks(string $baseurl, string $selected = ''): string { - if (!local_user()) { + if (!DI::userSession()->getLocalUserId()) { 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([DI::userSession()->getLocalUserId()], $networks)); - $r = DBA::p("SELECT `network` FROM `contact` WHERE `uid` = ? AND NOT `deleted` AND `network` != '' $extra_sql GROUP BY `network` ORDER BY `network`", - local_user() - ); + $r = DBA::select('contact', ['network'], $condition, ['group_by' => ['network'], 'order' => ['network']]); - $nets = array(); + $nets = []; while ($rr = DBA::fetch($r)) { $nets[] = ['ref' => $rr['network'], 'name' => ContactSelector::networkToName($rr['network'])]; } @@ -297,17 +299,17 @@ class Widget * * @param string $baseurl baseurl * @param string $selected optional, default empty - * @return string|void + * @return string * @throws \Exception */ - public static function fileAs($baseurl, $selected = '') + public static function fileAs(string $baseurl, string $selected = ''): string { - if (!local_user()) { + if (!DI::userSession()->getLocalUserId()) { return ''; } $terms = []; - foreach (Post\Category::getArray(local_user(), Post\Category::FILE) as $savedFolderName) { + foreach (Post\Category::getArray(DI::userSession()->getLocalUserId(), Post\Category::FILE) as $savedFolderName) { $terms[] = ['ref' => $savedFolderName, 'name' => $savedFolderName]; } @@ -325,23 +327,20 @@ class Widget /** * Return categories widget * - * @param string $baseurl baseurl - * @param string $selected optional, default empty - * @return string|void + * @param int $uid Id of the user owning the categories + * @param string $baseurl Base page URL + * @param string $selected Selected category + * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function categories($baseurl, $selected = '') + public static function categories(int $uid, string $baseurl, string $selected = ''): string { - $a = DI::app(); - - $uid = intval($a->getProfileOwner()); - if (!Feature::isEnabled($uid, 'categories')) { return ''; } - $terms = array(); - foreach (Post\Category::getArray(local_user(), Post\Category::CATEGORY) as $savedFolderName) { + $terms = []; + foreach (Post\Category::getArray($uid, Post\Category::CATEGORY) as $savedFolderName) { $terms[] = ['ref' => $savedFolderName, 'name' => $savedFolderName]; } @@ -361,17 +360,17 @@ class Widget * * @param int $uid Viewed profile user ID * @param string $nickname Viewed profile user nickname - * @return string|void + * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function commonFriendsVisitor(int $uid, string $nickname) + public static function commonFriendsVisitor(int $uid, string $nickname): string { - if (local_user() == $uid) { + if (DI::userSession()->getLocalUserId() == $uid) { return ''; } - $visitorPCid = local_user() ? Contact::getPublicIdByUserId(local_user()) : remote_user(); + $visitorPCid = DI::userSession()->getPublicContactId() ?: DI::userSession()->getRemoteUserId(); if (!$visitorPCid) { return ''; } @@ -422,7 +421,7 @@ class Widget * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function tagCloud(int $uid, int $limit = 50) + public static function tagCloud(int $uid, int $limit = 50): string { if (empty($uid)) { return ''; @@ -447,7 +446,7 @@ class Widget * @return string * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function postedByYear(string $url, int $uid, bool $wall) + public static function postedByYear(string $url, int $uid, bool $wall): string { $o = ''; @@ -467,6 +466,10 @@ class Widget if ($dthen) { // Set the start and end date to the beginning of the month + $cutoffday = $dthen; + $thisday = substr($dnow, 4); + $nextday = date('Y-m-d', strtotime($dnow . ' + 1 day')); + $nextday = substr($nextday, 4); $dnow = substr($dnow, 0, 8) . '01'; $dthen = substr($dthen, 0, 8) . '01'; @@ -499,7 +502,7 @@ class Widget $cutoff_year = intval(DateTimeFormat::localNow('Y')) - $visible_years; $cutoff = array_key_exists($cutoff_year, $ret); - $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/posted_date.tpl'),[ + $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('widget/posted_date.tpl'), [ '$title' => DI::l10n()->t('Archives'), '$size' => $visible_years, '$cutoff_year' => $cutoff_year, @@ -507,7 +510,11 @@ class Widget '$url' => $url, '$dates' => $ret, '$showless' => DI::l10n()->t('show less'), - '$showmore' => DI::l10n()->t('show more') + '$showmore' => DI::l10n()->t('show more'), + '$onthisdate' => DI::l10n()->t('On this date'), + '$thisday' => $thisday, + '$nextday' => $nextday, + '$cutoffday' => $cutoffday ]); return $o; @@ -516,21 +523,28 @@ 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 + * @param string $accounttype Account type * @return string */ - public static function accounttypes(string $base, $accounttype) + public static function accountTypes(string $base, string $accounttype): string { $accounts = [ ['ref' => 'person', 'name' => DI::l10n()->t('Persons')], ['ref' => 'organisation', 'name' => DI::l10n()->t('Organisations')], ['ref' => 'news', 'name' => DI::l10n()->t('News')], - ['ref' => 'community', 'name' => DI::l10n()->t('Forums')], + ['ref' => 'community', 'name' => DI::l10n()->t('Groups')], ]; - return self::filter('accounttype', DI::l10n()->t('Account Types'), '', - DI::l10n()->t('All'), $base, $accounts, $accounttype); + return self::filter( + 'accounttype', + DI::l10n()->t('Account Types'), + '', + DI::l10n()->t('All'), + $base, + $accounts, + $accounttype + ); } }