static function file_unlock($folder, $id, $field, $subitem) { self::_require_access($folder, "write", "edit"); $filename = self::file_download($folder, "edit", $id, $field, $subitem, true); if (!sys_can_unlock($filename, $_SESSION["username"])) { exit("{t}Access denied.{/t}"); } sys_unlock($filename, $_SESSION["username"]); return $folder; }
function sys_unlock($file, $username) { if (!sys_can_unlock($file, $username)) { return false; } @unlink($file . ".lck"); $locks = str_replace($file . "\n", "", file_get_contents(SIMPLE_STORE . "/locking/locks.txt")); file_put_contents(SIMPLE_STORE . "/locking/locks.txt", $locks, LOCK_EX); return true; }
if (!empty($file[$_REQUEST["subitem"]])) { $row_filename = $file[$_REQUEST["subitem"]]; } else { $row_filename = ""; } } if ($row_filename == "") { $filename = urldecode(basename($_REQUEST["filename"])); list($target, $filename) = sys_build_filename($filename, "simple_files"); dirs_checkdir($target); $target .= sys_get_pathnum($row["folder"]) . "/"; dirs_checkdir($target); $target .= md5($row["folder"]) . $filename; $newfilename = $target; } else { if (file_exists($row_filename . ".lck") and !sys_can_unlock($row_filename, $_SESSION["username"])) { sys_error(t("{t}Access to this file has been denied.{/t}"), "409 Conflict"); } else { $i = 1; $newfilename = preg_replace("|_rev\\d+|", "", $row_filename); $base = basename($newfilename); $dir = dirname($newfilename); while (file_exists($newfilename)) { if ($pos = strrpos($base, ".")) { $name = substr($base, 0, $pos) . "_rev" . $i++ . substr($base, $pos); } else { $name = $base . "_rev" . $i++; } $newfilename = $dir . "/" . $name; } if (!rename($row_filename, $newfilename)) {