X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=boot.php;h=292e5a94118a36d0eee5cb0802b5139486a8214f;hb=4f2ae8868431952bd3acda1537ee899740cbf205;hp=472814a6db546d9a07e41732bc43533982249a69;hpb=fe68e99c7c1b52172e3008c3015622883fad5315;p=friendica.git diff --git a/boot.php b/boot.php index 472814a6db..292e5a9411 100644 --- a/boot.php +++ b/boot.php @@ -1,6 +1,6 @@ \r\n"); * @brief Image storage quality. * * Lower numbers save space at cost of image detail. - * For ease of upgrade, please do not change here. Change jpeg quality with - * $a->config['system']['jpeg_quality'] = n; - * in .htconfig.php, where n is netween 1 and 100, and with very poor results - * below about 50 + * For ease of upgrade, please do not change here. Set [system] jpegquality = n in config/local.ini.php, + * where n is between 1 and 100, and with very poor results below about 50 */ define('JPEG_QUALITY', 100); /** - * $a->config['system']['png_quality'] from 0 (uncompressed) to 9 + * [system] png_quality = n where is between 0 (uncompressed) to 9 */ define('PNG_QUALITY', 8); @@ -81,9 +81,10 @@ define('PNG_QUALITY', 8); * this length (on the longest side, the other side will be scaled appropriately). * Modify this value using * - * $a->config['system']['max_image_length'] = n; + * [system] + * max_image_length = n; * - * in .htconfig.php + * in config/local.ini.php * * If you don't want to set a maximum length, set to -1. The default value is * defined by 'MAX_IMAGE_LENGTH' below. @@ -121,18 +122,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); /* @}*/ /** @@ -208,12 +211,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); /** * @} */ @@ -224,10 +231,11 @@ 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); /** * @} */ @@ -442,8 +450,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); /* @}*/ /** @@ -489,36 +498,6 @@ if (!defined("SIGTERM")) { if (!defined('CURLE_OPERATION_TIMEDOUT')) { define('CURLE_OPERATION_TIMEDOUT', CURLE_OPERATION_TIMEOUTED); } -/** - * Reverse the effect of magic_quotes_gpc if it is enabled. - * Please disable magic_quotes_gpc so we don't have to do this. - * See http://php.net/manual/en/security.magicquotes.disabling.php - */ -function startup() -{ - error_reporting(E_ERROR | E_WARNING | E_PARSE); - - set_time_limit(0); - - // This has to be quite large to deal with embedded private photos - ini_set('pcre.backtrack_limit', 500000); - - if (get_magic_quotes_gpc()) { - $process = [&$_GET, &$_POST, &$_COOKIE, &$_REQUEST]; - while (list($key, $val) = each($process)) { - foreach ($val as $k => $v) { - unset($process[$key][$k]); - if (is_array($v)) { - $process[$key][stripslashes($k)] = $v; - $process[] = &$process[$key][stripslashes($k)]; - } else { - $process[$key][stripslashes($k)] = stripslashes($v); - } - } - } - unset($process); - } -} /** * @brief Retrieve the App structure @@ -529,13 +508,7 @@ function startup() */ function get_app() { - global $a; - - if (empty($a)) { - $a = new App(dirname(__DIR__)); - } - - return $a; + return BaseObject::getApp(); } /** @@ -696,7 +669,7 @@ function check_url(App $a) // and www.example.com vs example.com. // We will only change the url to an ip address if there is no existing setting - if (empty($url) || (!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname))) { + if (empty($url) || (!link_compare($url, System::baseUrl())) && (!preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $a->get_hostname()))) { Config::set('system', 'url', System::baseUrl()); } @@ -801,7 +774,7 @@ function run_update_function($x) /** * @brief Synchronise addons: * - * $a->config['system']['addon'] contains a comma-separated list of names + * system.addon contains a comma-separated list of names * of addons which are used on this system. * Go through the database list of already installed addons, and if we have * an entry, but it isn't in the config list, call the uninstall procedure @@ -854,28 +827,6 @@ function check_addons(App $a) return; } -function get_guid($size = 16, $prefix = '') -{ - if (is_bool($prefix) && !$prefix) { - $prefix = ''; - } elseif ($prefix == '') { - $a = get_app(); - $prefix = hash('crc32', $a->get_hostname()); - } - - while (strlen($prefix) < ($size - 13)) { - $prefix .= mt_rand(); - } - - if ($size >= 24) { - $prefix = substr($prefix, 0, $size - 22); - return str_replace('.', '', uniqid($prefix, true)); - } else { - $prefix = substr($prefix, 0, max($size - 13, 0)); - return uniqid($prefix); - } -} - /** * @brief Used to end the current process, after saving session state. * @deprecated @@ -907,7 +858,7 @@ function goaway($path) */ function local_user() { - if (x($_SESSION, 'authenticated') && x($_SESSION, 'uid')) { + if (!empty($_SESSION['authenticated']) && !empty($_SESSION['uid'])) { return intval($_SESSION['uid']); } return false; @@ -925,10 +876,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; @@ -944,10 +895,17 @@ function public_contact() */ function remote_user() { - // You cannot be both local and remote - if (local_user()) { + // 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 (empty($_SESSION)) { return false; } + if (x($_SESSION, 'authenticated') && x($_SESSION, 'visitor_id')) { return intval($_SESSION['visitor_id']); } @@ -963,6 +921,10 @@ function remote_user() */ function notice($s) { + if (empty($_SESSION)) { + return; + } + $a = get_app(); if (!x($_SESSION, 'sysmsg')) { $_SESSION['sysmsg'] = []; @@ -995,125 +957,6 @@ function info($s) } } -/** - * @brief Wrapper around config to limit the text length of an incoming message - * - * @return int - */ -function get_max_import_size() -{ - $a = get_app(); - 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) { /** @@ -1169,13 +1012,11 @@ function is_site_admin() { $a = get_app(); - $adminlist = explode(",", str_replace(" ", "", $a->config['admin_email'])); + $admin_email = Config::get('config', 'admin_email'); - //if(local_user() && x($a->user,'email') && x($a->config,'admin_email') && ($a->user['email'] === $a->config['admin_email'])) - if (local_user() && x($a->user, 'email') && x($a->config, 'admin_email') && in_array($a->user['email'], $adminlist)) { - return true; - } - return false; + $adminlist = explode(',', str_replace(' ', '', $admin_email)); + + return local_user() && $admin_email && in_array(defaults($a->user, 'email', ''), $adminlist); } /** @@ -1269,7 +1110,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; @@ -1280,10 +1121,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() @@ -1332,7 +1173,7 @@ function get_cachefile($file, $writemode = true) $cache = get_itemcachepath(); if ((!$cache) || (!is_dir($cache))) { - return(""); + return ""; } $subfolder = $cache . "/" . substr($file, 0, 2); @@ -1346,7 +1187,6 @@ function get_cachefile($file, $writemode = true) } } - /// @TODO no need to put braces here return $cachepath; } @@ -1453,7 +1293,6 @@ function get_spoolpath() return ""; } - if (!function_exists('exif_imagetype')) { function exif_imagetype($file) { @@ -1491,7 +1330,7 @@ function validate_include(&$file) } // Simply return flag - return ($valid); + return $valid; } function current_load()