X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=boot.php;h=249fd9a891808ce44bfdff716d982ee3aaf99ff1;hb=4467dd4972f2b726b0fc443c68313ac6fdaeb3ca;hp=98db95227fa096256643e355099b1c086bba852e;hpb=d53e53cceb2823cceec36f91f39f8b1e6459a648;p=friendica.git diff --git a/boot.php b/boot.php index 98db95227f..249fd9a891 100644 --- a/boot.php +++ b/boot.php @@ -1,6 +1,6 @@ \r\n"); -define('ATOM_TIME', 'Y-m-d\TH:i:s\Z'); /** * @brief Image storage quality. @@ -122,18 +123,20 @@ define('LOGGER_ALL', 4); /** * @name Cache + * @deprecated since version 3.6 + * @see Cache * * Cache levels * @{ */ -define('CACHE_MONTH', 0); -define('CACHE_WEEK', 1); -define('CACHE_DAY', 2); -define('CACHE_HOUR', 3); -define('CACHE_HALF_HOUR', 4); -define('CACHE_QUARTER_HOUR', 5); -define('CACHE_FIVE_MINUTES', 6); -define('CACHE_MINUTE', 7); +define('CACHE_MONTH', Cache::MONTH); +define('CACHE_WEEK', Cache::WEEK); +define('CACHE_DAY', Cache::DAY); +define('CACHE_HOUR', Cache::HOUR); +define('CACHE_HALF_HOUR', Cache::HALF_HOUR); +define('CACHE_QUARTER_HOUR', Cache::QUARTER_HOUR); +define('CACHE_FIVE_MINUTES', Cache::FIVE_MINUTES); +define('CACHE_MINUTE', Cache::MINUTE); /* @}*/ /** @@ -209,12 +212,16 @@ define('PAGE_PRVGROUP', 5); * * ACCOUNT_TYPE_COMMUNITY - the account is community forum * Associated page types: PAGE_COMMUNITY, PAGE_PRVGROUP + * + * ACCOUNT_TYPE_RELAY - the account is a relay + * This will only be assigned to contacts, not to user accounts * @{ */ define('ACCOUNT_TYPE_PERSON', 0); define('ACCOUNT_TYPE_ORGANISATION', 1); define('ACCOUNT_TYPE_NEWS', 2); define('ACCOUNT_TYPE_COMMUNITY', 3); +define('ACCOUNT_TYPE_RELAY', 4); /** * @} */ @@ -225,57 +232,62 @@ define('ACCOUNT_TYPE_COMMUNITY', 3); * Type of the community page * @{ */ -define('CP_NO_COMMUNITY_PAGE', -1); -define('CP_USERS_ON_SERVER', 0); -define('CP_GLOBAL_COMMUNITY', 1); -define('CP_USERS_AND_GLOBAL', 2); +define('CP_NO_INTERNAL_COMMUNITY', -2); +define('CP_NO_COMMUNITY_PAGE', -1); +define('CP_USERS_ON_SERVER', 0); +define('CP_GLOBAL_COMMUNITY', 1); +define('CP_USERS_AND_GLOBAL', 2); /** * @} */ /** * @name Protocols + * @deprecated since version 3.6 + * @see Conversation * * Different protocols that we are storing * @{ */ -define('PROTOCOL_UNKNOWN', 0); -define('PROTOCOL_DFRN', 1); -define('PROTOCOL_DIASPORA', 2); -define('PROTOCOL_OSTATUS_SALMON', 3); -define('PROTOCOL_OSTATUS_FEED', 4); // Deprecated -define('PROTOCOL_GS_CONVERSATION', 5); // Deprecated -define('PROTOCOL_SPLITTED_CONV', 6); +define('PROTOCOL_UNKNOWN' , Conversation::PROTOCOL_UNKNOWN); +define('PROTOCOL_DFRN' , Conversation::PROTOCOL_DFRN); +define('PROTOCOL_DIASPORA' , Conversation::PROTOCOL_DIASPORA); +define('PROTOCOL_OSTATUS_SALMON' , Conversation::PROTOCOL_OSTATUS_SALMON); +define('PROTOCOL_OSTATUS_FEED' , Conversation::PROTOCOL_OSTATUS_FEED); // Deprecated +define('PROTOCOL_GS_CONVERSATION', Conversation::PROTOCOL_GS_CONVERSATION); // Deprecated +define('PROTOCOL_SPLITTED_CONV' , Conversation::PROTOCOL_SPLITTED_CONV); /** * @} */ /** - * @name Network + * @name Network constants + * @deprecated since version 3.6 + * @see Protocol * * Network and protocol family types * @{ */ -define('NETWORK_DFRN', 'dfrn'); // Friendica, Mistpark, other DFRN implementations -define('NETWORK_ZOT', 'zot!'); // Zot! - Currently unsupported -define('NETWORK_OSTATUS', 'stat'); // GNU-social, Pleroma, Mastodon, other OStatus implementations -define('NETWORK_FEED', 'feed'); // RSS/Atom feeds with no known "post/notify" protocol -define('NETWORK_DIASPORA', 'dspr'); // Diaspora -define('NETWORK_MAIL', 'mail'); // IMAP/POP -define('NETWORK_FACEBOOK', 'face'); // Facebook API -define('NETWORK_LINKEDIN', 'lnkd'); // LinkedIn -define('NETWORK_XMPP', 'xmpp'); // XMPP - Currently unsupported -define('NETWORK_MYSPACE', 'mysp'); // MySpace - Currently unsupported -define('NETWORK_GPLUS', 'goog'); // Google+ -define('NETWORK_PUMPIO', 'pump'); // pump.io -define('NETWORK_TWITTER', 'twit'); // Twitter -define('NETWORK_DIASPORA2', 'dspc'); // Diaspora connector -define('NETWORK_STATUSNET', 'stac'); // Statusnet connector -define('NETWORK_APPNET', 'apdn'); // app.net - Dead protocol -define('NETWORK_NEWS', 'nntp'); // Network News Transfer Protocol - Currently unsupported -define('NETWORK_ICALENDAR', 'ical'); // iCalendar - Currently unsupported -define('NETWORK_PNUT', 'pnut'); // pnut.io - Currently unsupported -define('NETWORK_PHANTOM', 'unkn'); // Place holder +define('NETWORK_DFRN' , Protocol::DFRN); // Friendica, Mistpark, other DFRN implementations +define('NETWORK_ZOT' , Protocol::ZOT); // Zot! - Currently unsupported +define('NETWORK_OSTATUS' , Protocol::OSTATUS); // GNU-social, Pleroma, Mastodon, other OStatus implementations +define('NETWORK_FEED' , Protocol::FEED); // RSS/Atom feeds with no known "post/notify" protocol +define('NETWORK_DIASPORA' , Protocol::DIASPORA); // Diaspora +define('NETWORK_MAIL' , Protocol::MAIL); // IMAP/POP +define('NETWORK_FACEBOOK' , Protocol::FACEBOOK); // Facebook API +define('NETWORK_LINKEDIN' , Protocol::LINKEDIN); // LinkedIn +define('NETWORK_XMPP' , Protocol::XMPP); // XMPP - Currently unsupported +define('NETWORK_MYSPACE' , Protocol::MYSPACE); // MySpace - Currently unsupported +define('NETWORK_GPLUS' , Protocol::GPLUS); // Google+ +define('NETWORK_PUMPIO' , Protocol::PUMPIO); // pump.io +define('NETWORK_TWITTER' , Protocol::TWITTER); // Twitter +define('NETWORK_DIASPORA2', Protocol::DIASPORA2); // Diaspora connector +define('NETWORK_STATUSNET', Protocol::STATUSNET); // Statusnet connector +define('NETWORK_APPNET' , Protocol::APPNET); // app.net - Dead protocol +define('NETWORK_NEWS' , Protocol::NEWS); // Network News Transfer Protocol - Currently unsupported +define('NETWORK_ICALENDAR', Protocol::ICALENDAR); // iCalendar - Currently unsupported +define('NETWORK_PNUT' , Protocol::PNUT); // pnut.io - Currently unsupported +define('NETWORK_PHANTOM' , Protocol::PHANTOM); // Place holder /** * @} */ @@ -439,8 +451,9 @@ define('ACTIVITY_OBJ_QUESTION', 'http://activityschema.org/object/question'); * @{ */ define('GRAVITY_PARENT', 0); -define('GRAVITY_LIKE', 3); +define('GRAVITY_ACTIVITY', 3); define('GRAVITY_COMMENT', 6); +define('GRAVITY_UNKNOWN', 9); /* @}*/ /** @@ -530,6 +543,7 @@ function get_app() if (empty($a)) { $a = new App(dirname(__DIR__)); + BaseObject::setApp($a); } return $a; @@ -661,7 +675,7 @@ function check_db($via_worker) if (empty($build)) { Config::set('system', 'build', DB_UPDATE_VERSION - 1); - $build = DB_UPDATE_VERSION; + $build = DB_UPDATE_VERSION - 1; } // We don't support upgrading from very old versions anymore @@ -669,7 +683,7 @@ function check_db($via_worker) die('You try to update from a version prior to database version 1170. The direct upgrade path is not supported. Please update to version 3.5.4 before updating to this version.'); } - if ($build != DB_UPDATE_VERSION) { + if ($build < DB_UPDATE_VERSION) { // When we cannot execute the database update via the worker, we will do it directly if (!Worker::add(PRIORITY_CRITICAL, 'DBUpdate') && $via_worker) { update_db(); @@ -851,11 +865,13 @@ function check_addons(App $a) return; } -function get_guid($size = 16, $prefix = "") +function get_guid($size = 16, $prefix = '') { - if ($prefix == "") { + if (is_bool($prefix) && !$prefix) { + $prefix = ''; + } elseif ($prefix == '') { $a = get_app(); - $prefix = hash("crc32", $a->get_hostname()); + $prefix = hash('crc32', $a->get_hostname()); } while (strlen($prefix) < ($size - 13)) { @@ -864,22 +880,19 @@ function get_guid($size = 16, $prefix = "") if ($size >= 24) { $prefix = substr($prefix, 0, $size - 22); - return(str_replace(".", "", uniqid($prefix, true))); + return str_replace('.', '', uniqid($prefix, true)); } else { $prefix = substr($prefix, 0, max($size - 13, 0)); - return(uniqid($prefix)); + return uniqid($prefix); } } /** * @brief Used to end the current process, after saving session state. + * @deprecated */ function killme() { - if (!get_app()->is_backend()) { - session_write_close(); - } - exit(); } @@ -923,10 +936,10 @@ function public_contact() if (!$public_contact_id && x($_SESSION, 'authenticated')) { if (x($_SESSION, 'my_address')) { // Local user - $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0)); + $public_contact_id = intval(Contact::getIdForURL($_SESSION['my_address'], 0, true)); } elseif (x($_SESSION, 'visitor_home')) { // Remote user - $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0)); + $public_contact_id = intval(Contact::getIdForURL($_SESSION['visitor_home'], 0, true)); } } elseif (!x($_SESSION, 'authenticated')) { $public_contact_id = false; @@ -942,10 +955,12 @@ function public_contact() */ function remote_user() { - // You cannot be both local and remote - if (local_user()) { - return false; - } + // You cannot be both local and remote. + // Unncommented by rabuzarus because remote authentication to local + // profiles wasn't possible anymore (2018-04-12). +// if (local_user()) { +// return false; +// } if (x($_SESSION, 'authenticated') && x($_SESSION, 'visitor_id')) { return intval($_SESSION['visitor_id']); } @@ -1004,114 +1019,6 @@ function get_max_import_size() return (x($a->config, 'max_import_size') ? $a->config['max_import_size'] : 0); } - -function current_theme() -{ - $app_base_themes = ['duepuntozero', 'dispy', 'quattro']; - - $a = get_app(); - - $page_theme = null; - - // Find the theme that belongs to the user whose stuff we are looking at - - if ($a->profile_uid && ($a->profile_uid != local_user())) { - $r = q( - "select theme from user where uid = %d limit 1", - intval($a->profile_uid) - ); - if (DBM::is_result($r)) { - $page_theme = $r[0]['theme']; - } - } - - // Allow folks to over-rule user themes and always use their own on their own site. - // This works only if the user is on the same server - - if ($page_theme && local_user() && (local_user() != $a->profile_uid)) { - if (PConfig::get(local_user(), 'system', 'always_my_theme')) { - $page_theme = null; - } - } - -// $mobile_detect = new Mobile_Detect(); -// $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet(); - $is_mobile = $a->is_mobile || $a->is_tablet; - - $standard_system_theme = Config::get('system', 'theme', ''); - $standard_theme_name = ((isset($_SESSION) && x($_SESSION, 'theme')) ? $_SESSION['theme'] : $standard_system_theme); - - if ($is_mobile) { - if (isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) { - $theme_name = $standard_theme_name; - } else { - $system_theme = Config::get('system', 'mobile-theme', ''); - if ($system_theme == '') { - $system_theme = $standard_system_theme; - } - $theme_name = ((isset($_SESSION) && x($_SESSION, 'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); - - if ($theme_name === '---') { - // user has selected to have the mobile theme be the same as the normal one - $theme_name = $standard_theme_name; - - if ($page_theme) { - $theme_name = $page_theme; - } - } - } - } else { - $theme_name = $standard_theme_name; - - if ($page_theme) { - $theme_name = $page_theme; - } - } - - if ($theme_name - && (file_exists('view/theme/' . $theme_name . '/style.css') - || file_exists('view/theme/' . $theme_name . '/style.php')) - ) { - return($theme_name); - } - - foreach ($app_base_themes as $t) { - if (file_exists('view/theme/' . $t . '/style.css') - || file_exists('view/theme/' . $t . '/style.php') - ) { - return($t); - } - } - - $fallback = array_merge(glob('view/theme/*/style.css'), glob('view/theme/*/style.php')); - if (count($fallback)) { - return (str_replace('view/theme/', '', substr($fallback[0], 0, -10))); - } - - /// @TODO No final return statement? -} - -/** - * @brief Return full URL to theme which is currently in effect. - * - * Provide a sane default if nothing is chosen or the specified theme does not exist. - * - * @return string - */ -function current_theme_url() -{ - $a = get_app(); - - $t = current_theme(); - - $opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : ''); - if (file_exists('view/theme/' . $t . '/style.php')) { - return('view/theme/' . $t . '/style.pcss' . $opts); - } - - return('view/theme/' . $t . '/style.css'); -} - function feed_birthday($uid, $tz) { /** @@ -1144,14 +1051,14 @@ function feed_birthday($uid, $tz) if (DBM::is_result($p)) { $tmp_dob = substr($p[0]['dob'], 5); if (intval($tmp_dob)) { - $y = datetime_convert($tz, $tz, 'now', 'Y'); + $y = DateTimeFormat::timezoneNow($tz, 'Y'); $bd = $y . '-' . $tmp_dob . ' 00:00'; $t_dob = strtotime($bd); - $now = strtotime(datetime_convert($tz, $tz, 'now')); + $now = strtotime(DateTimeFormat::timezoneNow($tz)); if ($t_dob < $now) { $bd = $y + 1 . '-' . $tmp_dob . ' 00:00'; } - $birthday = datetime_convert($tz, 'UTC', $bd, ATOM_TIME); + $birthday = DateTimeFormat::convert($bd, 'UTC', $tz, DateTimeFormat::ATOM); } } @@ -1170,6 +1077,7 @@ function is_site_admin() $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email'])); //if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email'])) + /// @TODO This if() + 2 returns can be shrinked into one return if (local_user() && x($a->user, 'email') && x($a->config, 'admin_email') && in_array($a->user['email'], $adminlist)) { return true; } @@ -1267,7 +1175,7 @@ function random_digits($digits) { $rn = ''; for ($i = 0; $i < $digits; $i++) { - /// @TODO rand() is different to mt_rand() and maybe lesser "random" + /// @TODO Avoid rand/mt_rand, when it comes to cryptography, they are generating predictable (seedable) numbers. $rn .= rand(0, 9); } return $rn; @@ -1278,10 +1186,10 @@ function get_server() $server = Config::get("system", "directory"); if ($server == "") { - $server = "http://dir.friendica.social"; + $server = "https://dir.friendica.social"; } - return($server); + return $server; } function get_temppath() @@ -1330,7 +1238,7 @@ function get_cachefile($file, $writemode = true) $cache = get_itemcachepath(); if ((!$cache) || (!is_dir($cache))) { - return(""); + return ""; } $subfolder = $cache . "/" . substr($file, 0, 2); @@ -1344,7 +1252,6 @@ function get_cachefile($file, $writemode = true) } } - /// @TODO no need to put braces here return $cachepath; } @@ -1451,7 +1358,6 @@ function get_spoolpath() return ""; } - if (!function_exists('exif_imagetype')) { function exif_imagetype($file) { @@ -1489,7 +1395,7 @@ function validate_include(&$file) } // Simply return flag - return ($valid); + return $valid; } function current_load()