HTMLPurifier_DefinitionCache_Serializer::_testPermissions PHP Method

_testPermissions() private method

Tests permissions on a directory and throws out friendly error messages and attempts to chmod it itself if possible
private _testPermissions ( string $dir, integer $chmod ) : boolean
$dir string Directory path
$chmod integer Permissions
return boolean True if directory is writable
    private function _testPermissions($dir, $chmod)
    {
        // early abort, if it is writable, everything is hunky-dory
        if (is_writable($dir)) {
            return true;
        }
        if (!is_dir($dir)) {
            // generally, you'll want to handle this beforehand
            // so a more specific error message can be given
            trigger_error('Directory ' . $dir . ' does not exist', E_USER_WARNING);
            return false;
        }
        if (function_exists('posix_getuid') && $chmod !== null) {
            // POSIX system, we can give more specific advice
            if (fileowner($dir) === posix_getuid()) {
                // we can chmod it ourselves
                $chmod = $chmod | 0700;
                if (chmod($dir, $chmod)) {
                    return true;
                }
            } elseif (filegroup($dir) === posix_getgid()) {
                $chmod = $chmod | 070;
            } else {
                // PHP's probably running as nobody, so we'll
                // need to give global permissions
                $chmod = $chmod | 0777;
            }
            trigger_error('Directory ' . $dir . ' not writable, ' . 'please chmod to ' . decoct($chmod), E_USER_WARNING);
        } else {
            // generic error message
            trigger_error('Directory ' . $dir . ' not writable, ' . 'please alter file permissions', E_USER_WARNING);
        }
        return false;
    }