aboutsummaryrefslogtreecommitdiff
path: root/www/functions/notused/func_folder.php
blob: 044fd8eace8af3f612226c57de47803e27f6237c (plain)
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?php

function database_mkdir($db, $file_id, $new_folder_name, $share){
	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 true;
	} else {
		return false;
	}
}

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 SLASH_IN_FOLDER_NAME;
	}

	$dupl_db = $db->query("SELECT parent FROM files WHERE name='" . SQLite3::escapeString($new_folder_name) . "' AND owner=".$_SESSION["userid"].";");
	while($dupl_ar = $dupl_db->fetchArray(SQLITE3_NUM)){
		if($dupl_ar[0] == $file_id){
			return MKDIR_DUPLICATE;
		}
	}
	
	if(database_mkdir($db, $file_id, $new_folder_name, $share)){
		return MKDIR_SUCCESS;
	} else {
		return MKDIR_DATABASE;
	}
}

function move_folder($old_path, $new_path){

	if(!$_SESSION["login"]){
		return NOT_LOGED_IN;
	}

	$db = $GLOBALS["db"];
	$old_file_id = select_file_id($db, $_SESSION["userid"], $old_path);
	$new_file_id = select_file_id($db, $_SESSION["userid"], $new_path);

	$old_folder_owner_db = $db->query("SELECT owner FROM files WHERE id=".$old_file_id.";");
	$old_folder_owner_ar = $old_folder_owner_db->fetchArray(SQLITE3_NUM);

	if($_SESSION["userid"] != $old_folder_owner_ar[0]){
		return MV_OLD_FOLDER_NOT_OWNER;
	}

	if(!$new_file_id){
		return MV_FOLDER_TARGET_NOT_EXIST;
	}

	$new_folder_owner_db = $db->query("SELECT owner FROM files WHERE id=".$new_file_id.";");
	$new_folder_owner_ar = $new_folder_owner_db->fetchArray(SQLITE3_NUM);

	if($_SESSION["userid"] != $new_folder_owner_ar[0]){
		return MV_NEW_FOLDER_NOT_OWNER; }

	if($db->exec("
		BEGIN TRANSACTION;
		UPDATE files SET parent=".$new_file_id." WHERE id=".$old_file_id.";
		COMMIT;
	")){
		return MV_FOLDER_SUCCESS;
	} else {
		return MV_FOLDER_DATABASE;
	}
}

function rename_folder($path, $new_name){
	if(!$_SESSION["login"]){
		return NOT_LOGED_IN;
	}

	$db = $GLOBALS["db"];

	$file_id = select_file_id($db, $_SESSION["username"], $path);

	$folder_owner_db = $db->query("SELECT owner FROM fiiles where id=".$file_id.";");
	$folder_owner_ar = $folder_owner_db->fetchArray(SQLITE3_NUM);

	if($folder_owner_ar[0] != $_SESSION["userid"]){
		return FOLDER_NOT_OWNER;
	}

	if(preg_match("/\//", $new_name)){
		return SLASH_IN_FOLDER_NAME;
	}

	$dupl_db = $db->query("SELECT parent FROM files WHERE name='" . SQLite3::escapeString($new_name) . "' AND owner=".$_SESSION["userid"].";");
	while($dupl_ar = $dupl_db->fetchArray(SQLITE3_NUM)){
		if($dupl_ar[0] == $file_id){
			return MKDIR_DUPLICATE;
		}
	}

	if($db->exec("
		BEGIN TRANSACTION;
		UPDATE files SET name='".SQLite3::escapeString($new_name)."' WHERE id=".$file_id.";
		COMMIT;
	")){
		return true;
	} else {
		return DATABASE;
	}
}

function generate_download_link($file_id){

	if(!$_SESSION["login"]){
		return NOT_LOGED_IN;
	}

	$db = $GLOBALS["db"];

	$folder_owner_db = $db->query("SELECT owner FROM files where id=".$file_id.";");
	$folder_owner_ar = $folder_owner_db->fetchArray(SQLITE3_NUM);

	if($folder_owner_ar[0] != $_SESSION["userid"]){
		return FOLDER_NOT_OWNER;
	}
	
	$key_array = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",     "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",     "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "_", "-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" );

	$length = count($key_array);
	$key = "";

	for ($i=0;$i<21;$i++){
		$index = mt_rand(0,$length-1);
		$key = $key.$key_array[$index];
	}

	if($db->exec("
		BEGIN TRANSACTION;
		UPDATE files SET download_link='".$key."' WHERE id=".$file_id.";
		COMMIT;
	")){
		return $key;
	} else {
		return DATABASE;
	}
}