}
$new_dir = serendipity_uploadSecure($serendipity['POST']['parent'] . '/' . $serendipity['POST']['name'], true);
- $new_dir = str_replace('..', '', $new_dir);
+ $new_dir = str_replace(array('..', '//'), array('', '/'), $new_dir);
/* TODO: check if directory already exist */
if (@mkdir($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir)) {
printf(DIRECTORY_CREATED, $serendipity['POST']['name']);
@umask(0000);
@chmod($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir, 0777);
- serendipity_ACLGrant(0, 'directory', 'read', array(0), $new_dir . '/');
- serendipity_ACLGrant(0, 'directory', 'write', array(0), $new_dir . '/');
+
+ // Apply parent ACL to new child.
+ $array_parent_read = serendipity_ACLGet(0, 'directory', 'read', $serendipity['POST']['parent']);
+ $array_parent_write = serendipity_ACLGet(0, 'directory', 'write', $serendipity['POST']['parent']);
+ if (!is_array($array_parent_read) || count($array_parent_read) < 1) {
+ $parent_read = array(0);
+ } else {
+ $parent_read = array_keys($array_parent_read);
+ }
+ if (!is_array($array_parent_write) || count($array_parent_write) < 1) {
+ $parent_write = array(0);
+ } else {
+ $parent_write = array_keys($array_parent_write);
+ }
+
+ serendipity_ACLGrant(0, 'directory', 'read', $parent_read, $new_dir . '/');
+ serendipity_ACLGrant(0, 'directory', 'write', $parent_write, $new_dir . '/');
} else {
printf(DIRECTORY_WRITE_ERROR, $new_dir);
}
{if $item.depth == 1}
tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
{else}
- tmpNode = new YAHOO.widget.TextNode(mydir, last_node[{$item.depth} - 1], false);
+ if (last_node[{$item.depth}-1]) {ldelim}
+ tmpNode = new YAHOO.widget.TextNode(mydir, last_node[{$item.depth} - 1], false);
+ {rdelim} else {ldelim}
+ tmpNode = new YAHOO.widget.TextNode(mydir, coreNode, false);
+ {rdelim}
{/if}
last_node[{$item.depth}] = tmpNode;
{/foreach}