Merge pull request #12014 from annando/usertosession

The user related functions moved to the session class
This commit is contained in:
Hypolite Petovan 2022-10-18 07:30:21 -04:00 committed by GitHub
commit ab9b60b9d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 76 additions and 53 deletions

View File

@ -27,7 +27,7 @@
* easily as email does today. * easily as email does today.
*/ */
use Friendica\Model\Contact; use Friendica\Core\Session;
/** /**
* Constant with a HTML line break. * Constant with a HTML line break.
@ -36,7 +36,7 @@ use Friendica\Model\Contact;
* feed for the source. * feed for the source.
* This can be used in HTML and JavaScript where needed a line break. * This can be used in HTML and JavaScript where needed a line break.
*/ */
define('EOL', "<br />\r\n"); define('EOL', "<br />\r\n");
/** /**
* @name Gravity * @name Gravity
@ -50,79 +50,35 @@ define('GRAVITY_COMMENT', 6);
define('GRAVITY_UNKNOWN', 9); define('GRAVITY_UNKNOWN', 9);
/* @}*/ /* @}*/
// Normally this constant is defined - but not if "pcntl" isn't installed
if (!defined('SIGTERM')) {
define('SIGTERM', 15);
}
/**
* Depending on the PHP version this constant does exist - or not.
* See here: http://php.net/manual/en/curl.constants.php#117928
*/
if (!defined('CURLE_OPERATION_TIMEDOUT')) {
define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED);
}
if (!function_exists('exif_imagetype')) {
function exif_imagetype($file)
{
$size = getimagesize($file);
return $size[2];
}
}
/** /**
* Returns the user id of locally logged in user or false. * Returns the user id of locally logged in user or false.
* *
* @return int|bool user id or false * @return int|bool user id or false
* @deprecated since version 2022.12, use Core\Session::getLocalUser() instead
*/ */
function local_user() function local_user()
{ {
if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) { return Session::getLocalUser();
return intval($_SESSION['uid']);
}
return false;
} }
/** /**
* Returns the public contact id of logged in user or false. * Returns the public contact id of logged in user or false.
* *
* @return int|bool public contact id or false * @return int|bool public contact id or false
* @deprecated since version 2022.12, use Core\Session:: getPublicContact() instead
*/ */
function public_contact() function public_contact()
{ {
static $public_contact_id = false; return Session::getPublicContact();
if (!$public_contact_id && !empty($_SESSION['authenticated'])) {
if (!empty($_SESSION['my_address'])) {
// Local user
$public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0, false));
} elseif (!empty($_SESSION['visitor_home'])) {
// Remote user
$public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0, false));
}
} elseif (empty($_SESSION['authenticated'])) {
$public_contact_id = false;
}
return $public_contact_id;
} }
/** /**
* Returns public contact id of authenticated site visitor or false * Returns public contact id of authenticated site visitor or false
* *
* @return int|bool visitor_id or false * @return int|bool visitor_id or false
* @deprecated since version 2022.12, use Core\Session:: getRemoteUser() instead
*/ */
function remote_user() function remote_user()
{ {
if (empty($_SESSION['authenticated'])) { return Session::getRemoteUser();
return false;
}
if (!empty($_SESSION['visitor_id'])) {
return intval($_SESSION['visitor_id']);
}
return false;
} }

View File

@ -351,6 +351,11 @@ class App
{ {
set_time_limit(0); set_time_limit(0);
// Normally this constant is defined - but not if "pcntl" isn't installed
if (!defined('SIGTERM')) {
define('SIGTERM', 15);
}
// Ensure that all "strtotime" operations do run timezone independent // Ensure that all "strtotime" operations do run timezone independent
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');

View File

@ -389,7 +389,7 @@ abstract class BaseModule implements ICanHandleRequests
public static function getFormSecurityStandardErrorMessage(): string public static function getFormSecurityStandardErrorMessage(): string
{ {
return DI::l10n()->t("The form security token was not correct. This probably happened because the form has been opened for too long \x28>3 hours\x29 before submitting it.") . EOL; return DI::l10n()->t("The form security token was not correct. This probably happened because the form has been opened for too long \x28>3 hours\x29 before submitting it.");
} }
public static function checkFormSecurityTokenRedirectOnError(string $err_redirect, string $typename = '', string $formname = 'form_security_token') public static function checkFormSecurityTokenRedirectOnError(string $err_redirect, string $typename = '', string $formname = 'form_security_token')

View File

@ -69,6 +69,68 @@ class Session
DI::session()->clear(); DI::session()->clear();
} }
/**
* Returns the user id of locally logged in user or false.
*
* @return int|bool user id or false
*/
public static function getLocalUser()
{
$session = DI::session();
if (!empty($session->get('authenticated')) && !empty($session->get('uid'))) {
return intval($session->get('uid'));
}
return false;
}
/**
* Returns the public contact id of logged in user or false.
*
* @return int|bool public contact id or false
*/
public static function getPublicContact()
{
static $public_contact_id = false;
$session = DI::session();
if (!$public_contact_id && !empty($session->get('authenticated'))) {
if (!empty($session->get('my_address'))) {
// Local user
$public_contact_id = intval(Contact::getIdForURL($session->get('my_address'), 0, false));
} elseif (!empty($session->get('visitor_home'))) {
// Remote user
$public_contact_id = intval(Contact::getIdForURL($session->get('visitor_home'), 0, false));
}
} elseif (empty($session->get('authenticated'))) {
$public_contact_id = false;
}
return $public_contact_id;
}
/**
* Returns public contact id of authenticated site visitor or false
*
* @return int|bool visitor_id or false
*/
public static function getRemoteUser()
{
$session = DI::session();
if (empty($session->get('authenticated'))) {
return false;
}
if (!empty($session->get('visitor_id'))) {
return intval($session->get('visitor_id'));
}
return false;
}
/** /**
* Return the user contact ID of a visitor for the given user ID they are visiting * Return the user contact ID of a visitor for the given user ID they are visiting
* *