- $a = DI::app();
-
- if (empty($_SESSION['sysmsg_info'])) {
- $_SESSION['sysmsg_info'] = [];
- }
- if ($a->interactive) {
- $_SESSION['sysmsg_info'][] = $s;
- }
-}
-
-function feed_birthday($uid, $tz)
-{
- /**
- * Determine the next birthday, but only if the birthday is published
- * in the default profile. We _could_ also look for a private profile that the
- * recipient can see, but somebody could get mad at us if they start getting
- * public birthday greetings when they haven't made this info public.
- *
- * Assuming we are able to publish this info, we are then going to convert
- * the start time from the owner's timezone to UTC.
- *
- * This will potentially solve the problem found with some social networks
- * where birthdays are converted to the viewer's timezone and salutations from
- * elsewhere in the world show up on the wrong day. We will convert it to the
- * viewer's timezone also, but first we are going to convert it from the birthday
- * person's timezone to GMT - so the viewer may find the birthday starting at
- * 6:00PM the day before, but that will correspond to midnight to the birthday person.
- */
- $birthday = '';
-
- if (!strlen($tz)) {
- $tz = 'UTC';
- }
-
- $profile = DBA::selectFirst('profile', ['dob'], ['uid' => $uid]);
- if (DBA::isResult($profile)) {
- $tmp_dob = substr($profile['dob'], 5);
- if (intval($tmp_dob)) {
- $y = DateTimeFormat::timezoneNow($tz, 'Y');
- $bd = $y . '-' . $tmp_dob . ' 00:00';
- $t_dob = strtotime($bd);
- $now = strtotime(DateTimeFormat::timezoneNow($tz));
- if ($t_dob < $now) {
- $bd = $y + 1 . '-' . $tmp_dob . ' 00:00';
- }
- $birthday = DateTimeFormat::convert($bd, 'UTC', $tz, DateTimeFormat::ATOM);
- }
- }
-
- return $birthday;
-}
-
-/**
- * Check if current user has admin role.
- *
- * @return bool true if user is an admin
- */
-function is_site_admin()
-{
- $a = DI::app();
-
- $admin_email = DI::config()->get('config', 'admin_email');
-
- $adminlist = explode(',', str_replace(' ', '', $admin_email));
-
- return local_user() && $admin_email && in_array($a->user['email'] ?? '', $adminlist);
-}
-
-/**
- * Returns the complete URL of the current page, e.g.: http(s)://something.com/network
- *
- * Taken from http://webcheatsheet.com/php/get_current_page_url.php
- */
-function curPageURL()
-{
- $pageURL = 'http';
- if (!empty($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) {
- $pageURL .= "s";
- }
-
- $pageURL .= "://";
-
- if ($_SERVER["SERVER_PORT"] != "80" && $_SERVER["SERVER_PORT"] != "443") {
- $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
- } else {
- $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
- }
- return $pageURL;
-}
-
-function get_temppath()
-{
- $temppath = DI::config()->get("system", "temppath");
-
- if (($temppath != "") && System::isDirectoryUsable($temppath)) {
- // We have a temp path and it is usable
- return BasePath::getRealPath($temppath);
- }
-
- // We don't have a working preconfigured temp path, so we take the system path.
- $temppath = sys_get_temp_dir();
-
- // Check if it is usable
- if (($temppath != "") && System::isDirectoryUsable($temppath)) {
- // Always store the real path, not the path through symlinks
- $temppath = BasePath::getRealPath($temppath);
-
- // To avoid any interferences with other systems we create our own directory
- $new_temppath = $temppath . "/" . DI::baseUrl()->getHostname();
- if (!is_dir($new_temppath)) {
- /// @TODO There is a mkdir()+chmod() upwards, maybe generalize this (+ configurable) into a function/method?
- mkdir($new_temppath);
- }
-
- if (System::isDirectoryUsable($new_temppath)) {
- // The new path is usable, we are happy
- DI::config()->set("system", "temppath", $new_temppath);
- return $new_temppath;
- } else {
- // We can't create a subdirectory, strange.
- // But the directory seems to work, so we use it but don't store it.
- return $temppath;
- }
- }
-
- // Reaching this point means that the operating system is configured badly.
- return '';
-}
-
-function get_cachefile($file, $writemode = true)
-{
- $cache = get_itemcachepath();
-
- if ((!$cache) || (!is_dir($cache))) {
- return "";
- }
-
- $subfolder = $cache . "/" . substr($file, 0, 2);
-
- $cachepath = $subfolder . "/" . $file;
-
- if ($writemode) {
- if (!is_dir($subfolder)) {
- mkdir($subfolder);
- chmod($subfolder, 0777);
- }
- }
-
- return $cachepath;
-}
-
-function clear_cache($basepath = "", $path = "")
-{
- if ($path == "") {
- $basepath = get_itemcachepath();
- $path = $basepath;
- }
-
- if (($path == "") || (!is_dir($path))) {
- return;
- }
-
- if (substr(realpath($path), 0, strlen($basepath)) != $basepath) {