Initial commit.
This commit is contained in:
63
lib/php/monica/chkwrite.inc.php
Normal file
63
lib/php/monica/chkwrite.inc.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
// File name: chkwrite.inc.php
|
||||
// Description: PHP subroutine to check the permission to write to a file
|
||||
// Date: 2002-04-16
|
||||
// Author: imacat <imacat@pristine.com.tw>
|
||||
// Copyright: Copyright (C) 2002-2007 Pristine Communications
|
||||
|
||||
// Set the include path
|
||||
if (!defined("INCPATH_SET")) {
|
||||
require_once dirname(__FILE__) . "/incpath.inc.php";
|
||||
}
|
||||
// Referenced subroutines
|
||||
require_once "monica/gettext.inc.php";
|
||||
require_once "monica/rel2abs.inc.php";
|
||||
|
||||
// check_writable: Check the permission to write to a file.
|
||||
// Input: File full pathname $file.
|
||||
// Output: true if success, false if failed.
|
||||
function check_writable($file)
|
||||
{
|
||||
// Standardize it
|
||||
$file = stdpath($file);
|
||||
// File exists.
|
||||
if (file_exists($file)) {
|
||||
// If it is a file
|
||||
if (!is_file($file)) {
|
||||
return array("msg"=>NC_("%s: It is not a file."),
|
||||
"margs"=>array($file));
|
||||
}
|
||||
// If it is writable
|
||||
if (!is_writable($file)) {
|
||||
return array("msg"=>NC_("%s: You have no permission to overwrite this file."),
|
||||
"margs"=>array($file));
|
||||
}
|
||||
|
||||
// Not an existing file. See if we can create it.
|
||||
} else {
|
||||
$parent = $file;
|
||||
// Find the nearest existing parent
|
||||
while ($parent != "" && !file_exists($parent)) {
|
||||
$parent = dirname($parent);
|
||||
}
|
||||
// Creat files from root --- You are insane
|
||||
if ($parent == "") {
|
||||
return array("msg"=>NC_("%s: You cannot create anything under the root directory."),
|
||||
"margs"=>array($file));
|
||||
}
|
||||
// This parent is not a directory
|
||||
if (!is_dir($parent)) {
|
||||
return array("msg"=>NC_("%s: One of the parents of this file (%s) is not a directory. You cannot create any new file inside."),
|
||||
"margs"=>array($file, $parent));
|
||||
}
|
||||
// If it is possible to create entries in this directory
|
||||
if (!is_writable($parent)) {
|
||||
return array("msg"=>NC_("%s: You have no permission to create any file under %s."),
|
||||
"margs"=>array($file, $parent));
|
||||
}
|
||||
}
|
||||
// OK
|
||||
return null;
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user