@chmod($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $new_dir, 0777); // 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 { $data['print_DIRECTORY_WRITE_ERROR'] = sprintf(DIRECTORY_WRITE_ERROR, $new_dir); } break; case 'directoryCreate': case 'directoryCreateSub': if (!serendipity_checkPermission('adminImagesDirectories')) { return; } $folders = serendipity_traversePath($serendipity['serendipityPath'] . $serendipity['uploadPath'], '', true, NULL, 1, NULL, 'write'); usort($folders, 'serendipity_sortPath'); $data['case_directoryCreate'] = true; $data['formtoken'] = serendipity_setFormToken(); $data['folders'] = $folders; $data['dir'] = $serendipity['GET']['dir'];
$data['doDelete'] = true; if ($serendipity['GET']['cid'] != 0) { $remaining_cat = (int) $serendipity['POST']['cat']['remaining_catid']; $category_ranges = serendipity_fetchCategoryRange((int) $serendipity['GET']['cid']); $category_range = implode(' AND ', $category_ranges); if ($serendipity['dbType'] == 'postgres' || $serendipity['dbType'] == 'sqlite' || $serendipity['dbType'] == 'sqlite3' || $serendipity['dbType'] == 'sqlite3oo' || $serendipity['dbType'] == 'pdo-sqlite') { $query = "UPDATE {$serendipity['dbPrefix']}entrycat\n SET categoryid={$remaining_cat} WHERE entryid IN\n (\n SELECT DISTINCT(e.id) FROM {$serendipity['dbPrefix']}entries e,\n {$serendipity['dbPrefix']}category c,\n {$serendipity['dbPrefix']}entrycat ec\n WHERE e.id=ec.entryid AND c.categoryid=ec.categoryid\n AND c.category_left BETWEEN {$category_range} {$admin_category}\n )"; } else { $query = "UPDATE {$serendipity['dbPrefix']}entries e,\n {$serendipity['dbPrefix']}entrycat ec,\n {$serendipity['dbPrefix']}category c\n SET ec.categoryid={$remaining_cat}\n WHERE e.id = ec.entryid\n AND c.categoryid = ec.categoryid\n AND c.category_left BETWEEN {$category_range}\n {$admin_category}"; } serendipity_db_query($query); if (serendipity_deleteCategory($category_range, $admin_category)) { foreach ($category_ranges as $cid) { if (serendipity_ACLCheck($serendipity['authorid'], $cid, 'category', 'write')) { serendipity_ACLGrant($cid, 'category', 'read', array()); serendipity_ACLGrant($cid, 'category', 'write', array()); } } $data['deleteSuccess'] = true; $data['remaining_cat'] = $remaining_cat; $data['cid'] = (int) $serendipity['GET']['cid']; $serendipity['GET']['adminAction'] = 'view'; } } else { $data['deleteSuccess'] = false; } } if ($serendipity['GET']['adminAction'] == 'delete') { $data['delete'] = true; $this_cat = serendipity_fetchCategoryInfo($serendipity['GET']['cid']); if (serendipity_checkPermission('adminCategoriesDelete') && serendipity_checkPermission('adminCategoriesMaintainOthers') || serendipity_checkPermission('adminCategoriesDelete') && ($serendipity['authorid'] == $this_cat['authorid'] || $this_cat['authorid'] == '0') || serendipity_checkPermission('adminCategoriesDelete') && serendipity_ACLCheck($serendipity['authorid'], $serendipity['GET']['cid'], 'category', 'write')) {