]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/System.php
Merge pull request #6883 from annando/uri-not-url
[friendica.git] / src / Core / System.php
index ba3d03e6229f283e3d0d7250366869f144e8caeb..45a88fe0937b6d92c349d527c8985eab28e04c05 100644 (file)
@@ -176,6 +176,12 @@ class System extends BaseObject
                exit();
        }
 
+       public static function jsonError($httpCode, $data, $content_type = 'application/json')
+       {
+               header($_SERVER["SERVER_PROTOCOL"] . ' ' . $httpCode);
+               self::jsonExit($data, $content_type);
+       }
+
        /**
         * @brief Encodes content to json.
         *
@@ -234,21 +240,6 @@ class System extends BaseObject
                }
        }
 
-       /**
-        * Generates a process identifier for the logging
-        *
-        * @param string $prefix A given prefix
-        *
-        * @return string a generated process identifier
-        */
-       public static function processID($prefix)
-       {
-               // We aren't calling any other function here.
-               // Doing so could easily create an endless loop
-               $trailer = $prefix . ':' . getmypid() . ':';
-               return substr($trailer . uniqid('') . mt_rand(), 0, 26);
-       }
-
        /**
         * Returns the current Load of the System
         *
@@ -286,6 +277,61 @@ class System extends BaseObject
                exit();
        }
 
+       /**
+        * @brief Returns the system user that is executing the script
+        *
+        * This mostly returns something like "www-data".
+        *
+        * @return string system username
+        */
+       public static function getUser()
+       {
+               if (!function_exists('posix_getpwuid') || !function_exists('posix_geteuid')) {
+                       return '';
+               }
+
+               $processUser = posix_getpwuid(posix_geteuid());
+               return $processUser['name'];
+       }
+
+       /**
+        * @brief Checks if a given directory is usable for the system
+        *
+        * @param      $directory
+        * @param bool $check_writable
+        *
+        * @return boolean the directory is usable
+        */
+       public static function isDirectoryUsable($directory, $check_writable = true)
+       {
+               if ($directory == '') {
+                       Logger::log('Directory is empty. This shouldn\'t happen.', Logger::DEBUG);
+                       return false;
+               }
+
+               if (!file_exists($directory)) {
+                       Logger::log('Path "' . $directory . '" does not exist for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if (is_file($directory)) {
+                       Logger::log('Path "' . $directory . '" is a file for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if (!is_dir($directory)) {
+                       Logger::log('Path "' . $directory . '" is not a directory for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               if ($check_writable && !is_writable($directory)) {
+                       Logger::log('Path "' . $directory . '" is not writable for user ' . static::getUser(), Logger::DEBUG);
+                       return false;
+               }
+
+               return true;
+       }
+
        /// @todo Move the following functions from boot.php
        /*
        function killme()