addresses #1
directories are working users still have dependencies to database code
This commit is contained in:
parent
5e60bf4a9a
commit
7bffc8bf97
12 changed files with 168 additions and 183 deletions
|
@ -53,7 +53,7 @@ $mandatorygroups = array(ADMIN_GROUP);
|
|||
* @return an array of group names
|
||||
*/
|
||||
function getDirGroupsFromHtaccess($dirname) {
|
||||
$htaccessname = $dirname . DIRECTORY_SEPARATOR . ".htaccess";
|
||||
$htaccessname = getFullPath($dirname) . DIRECTORY_SEPARATOR . ".htaccess";
|
||||
$groups = array();
|
||||
if (false !== ($fh = fopen($htaccessname, "r"))) {
|
||||
while (!feof($fh)) {
|
||||
|
@ -73,17 +73,6 @@ function getDirGroupsFromHtaccess($dirname) {
|
|||
return $groups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the names of groups for a directory.
|
||||
*
|
||||
* @param string $dirname directory name relative to {@link DAV_ROOT}
|
||||
* @return an array of group names
|
||||
* @see #getDirGroupsFromHtaccess(string)
|
||||
*/
|
||||
function getDirGroups($dirname) {
|
||||
return getDirGroupsFromHtaccess(DAV_ROOT . DIRECTORY_SEPARATOR . $dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Counts the visible files and their accumulated size in a directory
|
||||
* tree.
|
||||
|
@ -120,7 +109,7 @@ function getDirectoryData($dirname) {
|
|||
$dir = array();
|
||||
$dir['name'] = basename($dirname);
|
||||
$dir['groups'] = getDirGroupsFromHtaccess($dirname);
|
||||
list($dir['filecount'], $dir['filesize']) = countFilesRecursive($dirname);
|
||||
list($dir['filecount'], $dir['filesize']) = countFilesRecursive(getFullPath($dirname));
|
||||
$dir['maydelete'] = ($dir['filecount'] == 0) ? 1 : 0;
|
||||
$dir['filesize'] = sprintf("%d kBytes", $dir['filesize'] / 1024);
|
||||
return $dir;
|
||||
|
@ -129,12 +118,12 @@ function getDirectoryData($dirname) {
|
|||
/**
|
||||
* Gets XML encoded data of a directory.
|
||||
*
|
||||
* @param string $dirname dirname relative to {@link DAV_ROOT}
|
||||
* @param string $dirname dirname relative to {@link $davconfig['dav.dir']}
|
||||
* @return XML string
|
||||
*/
|
||||
function getDirectoryDataAsXml($dirname) {
|
||||
if (is_dir(DAV_ROOT . $dirname)) {
|
||||
$dirdata = getDirectoryData(DAV_ROOT . $dirname);
|
||||
if (is_dir(getFullPath($dirname))) {
|
||||
$dirdata = getDirectoryData($dirname);
|
||||
header("Content-Type: text/xml; charset=UTF-8");
|
||||
return sprintf('<?xml version="1.0" encoding="utf8"?><directory><dirname>%s</dirname><groups>%s</groups><filecount>%d</filecount><filesize>%s</filesize><maydelete>%d</maydelete></directory>', $dirdata['name'], implode(", ", $dirdata['groups']), $dirdata['filecount'], $dirdata['filesize'], $dirdata['maydelete']);
|
||||
} else {
|
||||
|
@ -145,7 +134,7 @@ function getDirectoryDataAsXml($dirname) {
|
|||
/**
|
||||
* Gets XML encoded data of a deleted directory.
|
||||
*
|
||||
* @param string $dirname directory name relative to {@link DAV_ROOT}
|
||||
* @param string $dirname directory name relative to {@link $davconfig['dav.dir']}
|
||||
* @return XML string
|
||||
*/
|
||||
function getDeletedDirectoryData($dirname) {
|
||||
|
@ -155,19 +144,19 @@ function getDeletedDirectoryData($dirname) {
|
|||
|
||||
/**
|
||||
* Gets the list of directory data for all valid directories below
|
||||
* {@link DAV_ROOT}.
|
||||
* {@link $davconfig['dav.dir']}.
|
||||
*
|
||||
* @return array of directory data arrays
|
||||
* @see #getDirectoryData(string)
|
||||
*/
|
||||
function getDirectories() {
|
||||
$dirs = array();
|
||||
if (false !== ($entries = scandir(DAV_ROOT))) {
|
||||
if (false !== ($entries = scandir($GLOBALS['davconfig']['dav.dir']))) {
|
||||
foreach ($entries as $entry) {
|
||||
if (is_dir(DAV_ROOT . $entry)) {
|
||||
if (is_dir(getFullPath($entry))) {
|
||||
if (strpos($entry, '.') !== 0) {
|
||||
if ($entry != ADMIN_DIR) {
|
||||
array_push($dirs, getDirectoryData(DAV_ROOT . $entry));
|
||||
array_push($dirs, getDirectoryData($entry));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -180,11 +169,11 @@ function getDirectories() {
|
|||
* Sets the groups of a directory in its .htaccess file. Mandatory
|
||||
* groups are added automatically.
|
||||
*
|
||||
* @param string $dirname directory name relative to {@link DAV_ROOT}
|
||||
* @param string $dirname directory name relative to {@link $davconfig['dav.dir']}
|
||||
* @param array &$groups reference to a list of group names
|
||||
*/
|
||||
function setGroups($dirname, &$groups) {
|
||||
$fullname = DAV_ROOT . $dirname;
|
||||
$fullname = getFullPath($dirname);
|
||||
foreach ($groups as $key => $value) {
|
||||
$groups[$key] = trim($value);
|
||||
}
|
||||
|
@ -226,13 +215,13 @@ function setGroups($dirname, &$groups) {
|
|||
* Updates a directory to be accessible by the given list of
|
||||
* groups. The directory is created if it doesn't exist.
|
||||
*
|
||||
* @param string $dirname directory name relative to {@link DAV_ROOT}
|
||||
* @param string $dirname directory name relative to {@link $davconfig['dav.dir']}
|
||||
* @param array $groups a list of group names
|
||||
*/
|
||||
function updateDirectory($dirname, $groups) {
|
||||
if (preg_match(DIRNAMERE, $dirname, $matches)) {
|
||||
if ($dirname != ADMIN_DIR) {
|
||||
$fullname = DAV_ROOT . $dirname;
|
||||
$fullname = getFullPath($dirname);
|
||||
if (file_exists($fullname)) {
|
||||
if (!is_dir($fullname)) {
|
||||
errorAsXml(sprintf(_("There already is a directory entry named %s, but it's not a directory!"), $dirname));
|
||||
|
@ -273,17 +262,15 @@ function delrecursive($fullname) {
|
|||
* Deletes the given directory if it has a valid name and is not the
|
||||
* administration interface directory.
|
||||
*
|
||||
* @param string $dirname directory name relative to {@link DAV_ROOT}
|
||||
* @param string $dirname directory name relative to {@link $davconfig['dav.dir']}
|
||||
*/
|
||||
function deleteDirectory($dirname) {
|
||||
global $davconfig;
|
||||
if (preg_match(DIRNAMERE, $dirname, $matches)) {
|
||||
if ($dirname != ADMIN_DIR) {
|
||||
$fullname = DAV_ROOT . $dirname;
|
||||
if (is_dir($fullname)) {
|
||||
return delrecursive($fullname);
|
||||
}
|
||||
$fullname = $davconfig['dav.dir'] . DIRECTORY_SEPARATOR . $dirname;
|
||||
if (is_dir($fullname)) {
|
||||
return delrecursive($fullname);
|
||||
}
|
||||
errorAsXml(_("Tried to delete the administration interface directory!"));
|
||||
}
|
||||
errorAsXml(sprintf(_("Invalid directory name %s!"), $dirname));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue