/** * @param string $filename * @param bool $isFlag * @param int $perm * @return bool */ protected static function _setPerms($filename, $isFlag, $perm) { $stat = @stat($filename); if ($stat === false) { return false; } // We're on Windows if (Sys::isWin()) { //@codeCoverageIgnoreStart return true; //@codeCoverageIgnoreEnd } list($myuid, $mygid) = array(posix_geteuid(), posix_getgid()); $isMyUid = $stat['uid'] == $myuid; $isMyGid = $stat['gid'] == $mygid; //@codeCoverageIgnoreStart if ($isFlag) { // Set only the user writable bit (file is owned by us) if ($isMyUid) { return chmod($filename, fileperms($filename) | intval('0' . $perm . '00', 8)); } // Set only the group writable bit (file group is the same as us) if ($isMyGid) { return chmod($filename, fileperms($filename) | intval('0' . $perm . $perm . '0', 8)); } // Set the world writable bit (file isn't owned or grouped by us) return chmod($filename, fileperms($filename) | intval('0' . $perm . $perm . $perm, 8)); } else { // Set only the user writable bit (file is owned by us) if ($isMyUid) { $add = intval('0' . $perm . $perm . $perm, 8); return self::_chmod($filename, $perm, $add); } // Set only the group writable bit (file group is the same as us) if ($isMyGid) { $add = intval('00' . $perm . $perm, 8); return self::_chmod($filename, $perm, $add); } // Set the world writable bit (file isn't owned or grouped by us) $add = intval('000' . $perm, 8); return self::_chmod($filename, $perm, $add); } //@codeCoverageIgnoreEnd }