PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/managefile.php

https://gitlab.com/vectorci/Collabtive
PHP | 323 lines | 288 code | 27 blank | 8 comment | 68 complexity | dd44cc1fbc2eccece7455c1849e02e29 MD5 | raw file
  1. <?php
  2. include("./init.php");
  3. // check if user is logged in
  4. if (!isset($_SESSION["userid"])) {
  5. $template->assign("loginerror", 0);
  6. $template->display("login.tpl");
  7. die();
  8. }
  9. $myfile = new datei();
  10. $POST_MAX_SIZE = ini_get('post_max_size');
  11. $POST_MAX_SIZE = $POST_MAX_SIZE . "B";
  12. $id = getArrayVal($_GET, "id");
  13. $thisfile = getArrayVal($_GET, "file");
  14. $mode = getArrayVal($_GET, "mode");
  15. $action = getArrayVal($_GET, "action");
  16. $name = getArrayVal($_POST, "name");
  17. $desc = getArrayVal($_POST, "desc");
  18. $tags = getArrayVal($_POST, "tags");
  19. $title = getArrayVal($_POST, "title");
  20. $upfolder = getArrayVal($_POST, "upfolder");
  21. $project = array('ID' => $id);
  22. $template->assign("project", $project);
  23. $template->assign("mode", $mode);
  24. $classes = array("overview" => "overview",
  25. "msgs" => "msgs",
  26. "tasks" => "tasks",
  27. "miles" => "miles",
  28. "files" => "files_active",
  29. "users" => "users",
  30. "tracker" => "tracking"
  31. );
  32. $template->assign("classes", $classes);
  33. if (!chkproject($userid, $id)) {
  34. $errtxt = $langfile["notyourproject"];
  35. $noperm = $langfile["accessdenied"];
  36. $template->assign("errortext", "$errtxt<br>$noperm");
  37. $template->display("error.tpl");
  38. die();
  39. }
  40. if ($action == "upload") {
  41. $num = $_POST['numfiles'];
  42. if ($upfolder) {
  43. $thefolder = $myfile->getFolder($upfolder);
  44. $thefolder = $thefolder["name"];
  45. $upath = "files/" . CL_CONFIG . "/$id/" . $thefolder;
  46. } else {
  47. $upath = "files/" . CL_CONFIG . "/$id";
  48. $upfolder = 0;
  49. }
  50. $chk = 0;
  51. for($i = 1;$i <= $num;$i++) {
  52. $fid = $myfile->upload("userfile$i", $upath, $id, $upfolder);
  53. $fileprops = $myfile->getFile($fid);
  54. if ($settings["mailnotify"]) {
  55. $sendto = getArrayVal($_POST, "sendto");
  56. $usr = (object) new project();
  57. $pname = $usr->getProject($id);
  58. $users = $usr->getProjectMembers($id, 10000);
  59. if ($sendto[0] == "all") {
  60. $sendto = $users;
  61. $sendto = reduceArray($sendto);
  62. } elseif ($sendto[0] == "none") {
  63. $sendto = array();
  64. }
  65. foreach($users as $user) {
  66. if (!empty($user["email"])) {
  67. if (is_array($sendto)) {
  68. if (in_array($user["ID"], $sendto)) {
  69. // check if subfolder exists, else root folder
  70. $whichfolder = (!empty($thefolder)) ? $thefolder : $langfile["rootdir"];
  71. // send email
  72. $themail = new emailer($settings);
  73. $themail->send_mail($user["email"], $langfile["filecreatedsubject"], $langfile["hello"] . ",<br /><br/>" . $langfile["filecreatedtext"] . "<br /><br />" . $langfile["project"] . ": " . $pname["name"] . "<br />" . $langfile["folder"] . ": " . $whichfolder . "<br />" . $langfile["file"] . ": <a href = \"" . $url . $fileprops["datei"] . "\">" . $url . $fileprops["datei"] . "</a>");
  74. }
  75. } else {
  76. // send email
  77. $themail = new emailer($settings);
  78. $themail->send_mail($user["email"], $langfile["filecreatedsubject"], "");
  79. }
  80. }
  81. }
  82. }
  83. }
  84. $loc = $url .= "managefile.php?action=showproject&id=$id&mode=added";
  85. header("Location: $loc");
  86. }
  87. elseif($action == "uploadAsync")
  88. {
  89. if ($upfolder) {
  90. $thefolder = $myfile->getFolder($upfolder);
  91. $thefolder = $thefolder["name"];
  92. $upath = "files/" . CL_CONFIG . "/$id/" . $thefolder;
  93. } else {
  94. $upath = "files/" . CL_CONFIG . "/$id";
  95. $upfolder = 0;
  96. }
  97. $num = count($_FILES);
  98. $chk = 0;
  99. foreach($_FILES as $file) {
  100. $fid = $myfile->uploadAsync($file["name"],$file["tmp_name"],$file["type"],$file["size"], $upath, $id, $upfolder);
  101. $fileprops = $myfile->getFile($fid);
  102. if ($settings["mailnotify"]) {
  103. $sendto = getArrayVal($_POST, "sendto");
  104. $usr = (object) new project();
  105. $pname = $usr->getProject($id);
  106. $users = $usr->getProjectMembers($id, 10000);
  107. if ($sendto[0] == "all") {
  108. $sendto = $users;
  109. $sendto = reduceArray($sendto);
  110. } elseif ($sendto[0] == "none") {
  111. $sendto = array();
  112. }
  113. foreach($users as $user) {
  114. if (!empty($user["email"])) {
  115. if (is_array($sendto)) {
  116. if (in_array($user["ID"], $sendto)) {
  117. // check if subfolder exists, else root folder
  118. $whichfolder = (!empty($thefolder)) ? $thefolder : $langfile["rootdir"];
  119. // send email
  120. $themail = new emailer($settings);
  121. $themail->send_mail($user["email"], $langfile["filecreatedsubject"], $langfile["hello"] . ",<br /><br/>" . $langfile["filecreatedtext"] . "<br /><br />" . $langfile["project"] . ": " . $pname["name"] . "<br />" . $langfile["folder"] . ": " . $whichfolder . "<br />" . $langfile["file"] . ": <a href = \"" . $url . $fileprops["datei"] . "\">" . $url . $fileprops["datei"] . "</a>");
  122. }
  123. } else {
  124. // send email
  125. $themail = new emailer($settings);
  126. $themail->send_mail($user["email"], $langfile["filecreatedsubject"], "");
  127. }
  128. }
  129. }
  130. }
  131. }
  132. $loc = $url .= "managefile.php?action=showproject&id=$id&mode=added";
  133. //header("Location: $loc");
  134. echo "UPLOADED";
  135. }
  136. elseif ($action == "editform") {
  137. if (!$userpermissions["files"]["edit"]) {
  138. $errtxt = $langfile["nopermission"];
  139. $noperm = $langfile["accessdenied"];
  140. $template->assign("errortext", "<h2>$errtxt</h2><br>$noperm");
  141. $template->display("error.tpl");
  142. die();
  143. }
  144. $file = $myfile->getFile($thisfile);
  145. $title = $langfile["editfile"];
  146. $myproject = new project();
  147. $pro = $myproject->getProject($id);
  148. $projectname = $pro["name"];
  149. $template->assign("title", $title);
  150. $template->assign("file", $file);
  151. $template->assign("projectname", $projectname);
  152. $template->display("editfileform.tpl");
  153. } elseif ($action == "edit") {
  154. if (!$userpermissions["files"]["edit"]) {
  155. $errtxt = $langfile["nopermission"];
  156. $noperm = $langfile["accessdenied"];
  157. $template->assign("errortext", "<h2>$errtxt</h2><br>$noperm");
  158. $template->display("error.tpl");
  159. die();
  160. }
  161. $tagobj = new tags();
  162. $tags = $tagobj->formatInputTags($tags);
  163. if ($myfile->edit($thisfile, $title, $desc, $tags)) {
  164. $loc = $url .= "managefile.php?action=showproject&id=$id&mode=edited";
  165. header("Location: $loc");
  166. }
  167. } elseif ($action == "delete") {
  168. if (!$userpermissions["files"]["del"]) {
  169. $errtxt = $langfile["nopermission"];
  170. $noperm = $langfile["accessdenied"];
  171. $template->assign("errortext", "<h2>$errtxt</h2><br>$noperm");
  172. $template->display("error.tpl");
  173. die();
  174. }
  175. if ($myfile->loeschen($thisfile)) {
  176. echo "ok";
  177. }
  178. } elseif ($action == "zipexport") {
  179. $topfad = CL_ROOT . "/files/" . CL_CONFIG . "/$id" . "/projectfiles" . $id . ".zip";
  180. $zip = new PclZip($topfad);
  181. if (file_exists($topfad)) {
  182. if (unlink($topfad)) {
  183. $create = $zip->create(CL_ROOT . "/files/" . CL_CONFIG . "/$id/", PCLZIP_OPT_REMOVE_ALL_PATH);
  184. }
  185. } else {
  186. $create = $zip->create(CL_ROOT . "/files/" . CL_CONFIG . "/$id/", PCLZIP_OPT_REMOVE_ALL_PATH);
  187. }
  188. if ($create != 0) {
  189. $loc = $url . "files/" . CL_CONFIG . "/$id" . "/projectfiles" . $id . ".zip";
  190. header("Location: $loc");
  191. }
  192. } elseif ($action == "folderexport") {
  193. $thefolder = $myfile->getFolder($thisfile);
  194. $topfad = CL_ROOT . "/files/" . CL_CONFIG . "/$id" . "/folder" . $thefolder["ID"] . ".zip";
  195. $zip = new PclZip($topfad);
  196. if (file_exists($topfad)) {
  197. if (unlink($topfad)) {
  198. $create = $zip->create(CL_ROOT . "/files/" . CL_CONFIG . "/$id/$thefolder[name]/", PCLZIP_OPT_REMOVE_ALL_PATH);
  199. }
  200. } else {
  201. $create = $zip->create(CL_ROOT . "/files/" . CL_CONFIG . "/$id/$thefolder[name]/", PCLZIP_OPT_REMOVE_ALL_PATH);
  202. }
  203. if ($create != 0) {
  204. $loc = $url . "/files/" . CL_CONFIG . "/$id" . "/folder" . $thefolder["ID"] . ".zip";
  205. header("Location: $loc");
  206. }
  207. } elseif ($action == "showproject") {
  208. $files = $myfile->getProjectFiles($id);
  209. $finfiles = array();
  210. if (!empty($files)) {
  211. foreach($files as $file) {
  212. if ($file["visible"]) {
  213. $filevis = unserialize($file["visible"]);
  214. if (is_array($filevis)) {
  215. if (in_array($userpermissions["ID"], $filevis)) {
  216. array_push($finfiles, $file);
  217. }
  218. } else {
  219. array_push($finfiles, $file);
  220. }
  221. } else {
  222. array_push($finfiles, $file);
  223. }
  224. }
  225. }
  226. $filenum = count($finfiles);
  227. if (empty($finfiles)) {
  228. $filenum = 0;
  229. }
  230. $folders = $myfile->getProjectFolders($id);
  231. $finfolders = array();
  232. if (!empty($folders)) {
  233. foreach($folders as $folder) {
  234. if ($folder["visible"]) {
  235. $foldvis = unserialize($folder["visible"]);
  236. if (is_array($foldvis)) {
  237. if (in_array($userpermissions["ID"], $foldvis)) {
  238. array_push($finfolders, $folder);
  239. }
  240. } else {
  241. array_push($finfolders, $folder);
  242. }
  243. } else {
  244. array_push($finfolders, $folder);
  245. }
  246. }
  247. }
  248. $allfolders = $myfile->getAllProjectFolders($id);
  249. $myproject = new project();
  250. $pro = $myproject->getProject($id);
  251. $members = $myproject->getProjectMembers($id, 10000);
  252. $rolesobj = new roles();
  253. $allroles = $rolesobj->getAllRoles();
  254. $projectname = $pro["name"];
  255. $title = $langfile['files'];
  256. $template->assign("title", $title);
  257. $template->assign("projectname", $projectname);
  258. SmartyPaginate::assign($template);
  259. $template->assign("files", $finfiles);
  260. $template->assign("filenum", $filenum);
  261. $template->assign("folders", $finfolders);
  262. $template->assign("members", $members);
  263. $template->assign("roles", $allroles);
  264. $template->assign("allfolders", $allfolders);
  265. $template->assign("postmax", $POST_MAX_SIZE);
  266. $template->display("projectfiles.tpl");
  267. } elseif ($action == "addfolder") {
  268. $name = getArrayVal($_POST, "foldertitle");
  269. $desc = getArrayVal($_POST, "folderdesc");
  270. $parent = getArrayVal($_POST, "folderparent");
  271. $visible = getArrayVal($_POST, "visible");
  272. if (empty($visible[0])) {
  273. $visible = "";
  274. }
  275. if ($myfile->addFolder($parent, $id, $name, $desc, $visible)) {
  276. $loc = $url .= "managefile.php?action=showproject&id=$id&mode=folderadded";
  277. header("Location: $loc");
  278. }
  279. } elseif ($action == "delfolder") {
  280. $ajaxreq = $_GET["ajax"];
  281. $folder = getArrayVal($_GET, "folder");
  282. if ($myfile->deleteFolder($folder, $id)) {
  283. if ($ajaxreq = 1) {
  284. echo "ok";
  285. } else {
  286. $loc = $url .= "managefile.php?action=showproject&id=$id&mode=folderdel";
  287. header("Location: $loc");
  288. }
  289. }
  290. } elseif ($action == "movefile") {
  291. $file = $_GET["file"];
  292. $file = substr($file, 4, strlen($file)-4);
  293. $target = $_GET["target"];
  294. $myfile->moveFile($file, $target);
  295. }
  296. ?>