Merge pull request #10628 from MrPetovan/bug/fatal-errors

Set profile fields for system user in Model\User::getOwnerDataById
This commit is contained in:
Michael Vogel 2021-08-24 14:13:32 +02:00 committed by GitHub
commit 9aca4b515f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 27 deletions

View file

@ -35,6 +35,7 @@ use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Network\HTTPException;
use Friendica\Protocol\Activity;
use Friendica\Protocol\Diaspora;
use Friendica\Util\DateTimeFormat;
@ -204,11 +205,13 @@ class Profile
* the theme is chosen before the _init() function of a theme is run, which will usually
* load a lot of theme-specific content
*
* @param App $a
* @param string $nickname string
*
* @param App $a
* @param string $nickname string
* @param bool $show_contacts
* @return array Profile
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*
* @throws HTTPException\NotFoundException
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
public static function load(App $a, string $nickname, bool $show_contacts = true)
@ -219,6 +222,12 @@ class Profile
return [];
}
// System user, aborting
if ($profile['uid'] === 0) {
DI::logger()->warning('System user found in Profile::load', ['nickname' => $nickname, 'callstack' => System::callstack(20)]);
throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
}
$a->setProfileOwner($profile['uid']);
DI::page()['title'] = $profile['name'] . ' @ ' . DI::config()->get('config', 'sitename');
@ -246,7 +255,7 @@ class Profile
* By now, the contact block isn't shown, when a different profile is given
* But: When this profile was on the same server, then we could display the contacts
*/
DI::page()['aside'] .= self::sidebar($profile, $block, $show_contacts);
DI::page()['aside'] .= self::getVCardHtml($profile, $block, $show_contacts);
return $profile;
}
@ -272,7 +281,7 @@ class Profile
* @hooks 'profile_sidebar'
* array $arr
*/
private static function sidebar(array $profile, bool $block, bool $show_contacts)
public static function getVCardHtml(array $profile, bool $block, bool $show_contacts)
{
$o = '';
$location = false;

View file

@ -149,14 +149,20 @@ class User
$system['page-flags'] = User::PAGE_FLAGS_SOAPBOX;
$system['account-type'] = $system['contact-type'];
$system['guid'] = '';
$system['nickname'] = $system['nick'];
$system['pubkey'] = $system['pubkey'];
$system['locality'] = '';
$system['region'] = '';
$system['country-name'] = '';
$system['net-publish'] = false;
$system['picdate'] = '';
$system['theme'] = '';
$system['publish'] = false;
$system['net-publish'] = false;
$system['hide-friends'] = true;
$system['prv_keywords'] = '';
$system['pub_keywords'] = '';
$system['address'] = '';
$system['locality'] = '';
$system['region'] = '';
$system['postal-code'] = '';
$system['country-name'] = '';
$system['homepage'] = DI::baseUrl()->get();
$system['dob'] = '0000-00-00';
// Ensure that the user contains data
$user = DBA::selectFirst('user', ['prvkey', 'guid'], ['uid' => 0]);