1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?php
function create_folder($path, $new_folder_name, $share){
$db = $GLOBALS["db"];
if(!$_SESSION["login"]){
return MKDIR_LOGIN;
}
$file_id = select_file_id($db, $_SESSION["userid"], $path);
$owner_db = $db->query("SELECT owner FROM files WHERE id=" . SQLite3::escapeString($file_id) . ";");
$owner_ar = $owner_db->fetchArray(SQLITE3_NUM);
if($owner_ar[0] != $_SESSION["userid"]){
return MKDIR_OWNER;
}
//TODO: Cut trailing or leading slash
//TODO: Maye create two folders instead of returning an error?
if(preg_match("/\//", $new_folder_name)){
return MKDIR_SLASH_IN_FOLDER_NAME;
}
$dupl_db = $db->query("SELECT parent FROM files WHERE name='" . SQLite3::escapeString($new_folder_name) . "';");
while($dupl_ar = $dupl_db->fetchArray(SQLITE3_NUM)){
if($dupl_ar[0] == $file_id){
return MKDIR_DUPLICATE;
}
}
if($db->exec("
BEGIN TRANSACTION;
INSERT INTO files (id, parent, owner, name, folder, size, share, hash) VALUES (Null, " . $file_id . ", " . $_SESSION['userid'] . ", '" . SQLite3::escapeString($new_folder_name) . "', 'DIRECTORY', 0, '" . SQLite3::escapeString($share) . "', '');
COMMIT;
")){
return MKDIR_SUCCESS;
} else {
return MKDIR_DATABASE;
}
}
|