/mods/_standard/file_storage/move.php

https://github.com/cindyli/ATutor · PHP · 131 lines · 95 code · 21 blank · 15 comment · 16 complexity · b7483a29274d936b9e66295195ca7859 MD5 · raw file

  1. <?php
  2. /****************************************************************/
  3. /* ATutor */
  4. /****************************************************************/
  5. /* Copyright (c) 2002-2010 */
  6. /* Inclusive Design Institute */
  7. /* http://atutor.ca */
  8. /* */
  9. /* This program is free software. You can redistribute it and/or*/
  10. /* modify it under the terms of the GNU General Public License */
  11. /* as published by the Free Software Foundation. */
  12. /****************************************************************/
  13. // $Id$
  14. define('AT_INCLUDE_PATH', '../../../include/');
  15. require(AT_INCLUDE_PATH.'vitals.inc.php');
  16. require(AT_INCLUDE_PATH.'../mods/_standard/file_storage/file_storage.inc.php');
  17. $owner_type = abs($_REQUEST['ot']);
  18. $owner_id = abs($_REQUEST['oid']);
  19. $owner_arg_prefix = '?ot='.$owner_type.SEP.'oid='.$owner_id. SEP;
  20. if (!($owner_status = fs_authenticate($owner_type, $owner_id)) || !query_bit($owner_status, WORKSPACE_AUTH_WRITE)) {
  21. $msg->addError('ACCESS_DENIED');
  22. header('Location: '.url_rewrite('mods/_standard/file_storage/index.php', AT_PRETTY_URL_IS_HEADER));
  23. exit;
  24. }
  25. if (isset($_POST['cancel'])) {
  26. $msg->addFeedback('CANCELLED');
  27. header('Location: '.url_rewrite('mods/_standard/file_storage/index.php'.$owner_arg_prefix.'folder='.abs($_POST['folder']), AT_PRETTY_URL_IS_HEADER));
  28. exit;
  29. } else if (isset($_POST['submit'])) {
  30. $_POST['new_folder'] = abs($_POST['new_folder']);
  31. if ($_POST['folder'] == $_POST['new_folder']) {
  32. // src = dest
  33. $msg->addFeedback('CANCELLED');
  34. header('Location: '.url_rewrite('mods/_standard/file_storage/index.php'.$owner_arg_prefix.'folder='.$_POST['new_folder'], AT_PRETTY_URL_IS_HEADER));
  35. exit;
  36. }
  37. if (isset($_POST['files'])) {
  38. foreach ($_POST['files'] as $file) {
  39. $file = abs($file);
  40. // check if this file name already exists
  41. $sql = "SELECT file_name FROM %sfiles WHERE file_id=%d";
  42. $row = queryDB($sql, array(TABLE_PREFIX, $file), TRUE);
  43. $sql = "SELECT file_id FROM %sfiles WHERE folder_id=%d AND file_id<>%d AND file_name='%s' AND parent_file_id=0 AND owner_type=%d AND owner_id=%d ORDER BY file_id DESC LIMIT 1";
  44. $row = queryDB($sql, array(TABLE_PREFIX, $_POST['new_folder'], $file, $row['file_name'], $owner_type, $owner_id), TRUE);
  45. if(count($row) > 0){
  46. fs_delete_file($row['file_id'], $owner_type, $owner_id);
  47. }
  48. $sql = "UPDATE %sfiles SET folder_id=%d, date=date WHERE file_id=%d AND owner_type=%d AND owner_id=%d";
  49. queryDB($sql, array(TABLE_PREFIX, $_POST['new_folder'], $file, $owner_type, $owner_id));
  50. }
  51. $msg->addFeedback('FILES_MOVED');
  52. }
  53. if (isset($_POST['folders'])) {
  54. foreach ($_POST['folders'] as $folder) {
  55. $file = abs($file);
  56. $sql = "UPDATE %sfolders SET parent_folder_id=%d WHERE folder_id=%d AND owner_type=%d AND owner_id=%d";
  57. queryDB($sql, array(TABLE_PREFIX, $_POST['new_folder'], $folder, $owner_type, $owner_id));
  58. }
  59. $msg->addFeedback('DIRS_MOVED');
  60. }
  61. header('Location: '.url_rewrite('mods/_standard/file_storage/index.php'.$owner_arg_prefix.'folder='.$_POST['new_folder'], AT_PRETTY_URL_IS_HEADER));
  62. exit;
  63. }
  64. require(AT_INCLUDE_PATH.'header.inc.php');
  65. $folder_id = abs($_GET['folder']);
  66. // can't use fs_get_folders() because we want all folders, not just at one level
  67. $folders = array();
  68. $sql = "SELECT folder_id, parent_folder_id, title FROM %sfolders WHERE owner_type=%d AND owner_id=%d ORDER BY parent_folder_id, title";
  69. $rows_folders = queryDB($sql, array(TABLE_PREFIX, $owner_type, $owner_id));
  70. foreach($rows_folders as $row){
  71. $folders[$row['parent_folder_id']][$row['folder_id']] = $row;
  72. }
  73. ?>
  74. <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  75. <?php if ($_GET['files']): foreach ($_GET['files'] as $tmpfile): ?>
  76. <input type="hidden" name="files[]" value="<?php echo $tmpfile; ?>" />
  77. <?php endforeach; endif; ?>
  78. <?php if ($_GET['folders']): foreach ($_GET['folders'] as $tmpfolder): ?>
  79. <input type="hidden" name="folders[]" value="<?php echo $tmpfolder; ?>" />
  80. <?php endforeach; endif; ?>
  81. <input type="hidden" name="folder" value="<?php echo $folder_id; ?>" />
  82. <input type="hidden" name="ot" value="<?php echo $owner_type; ?>" />
  83. <input type="hidden" name="oid" value="<?php echo $owner_id; ?>" />
  84. <div class="input-form">
  85. <div class="row">
  86. <p><?php echo _AT('select_directory'); ?></p>
  87. </div>
  88. <div class="row">
  89. <ul>
  90. <li class="folders"><input type="radio" name="new_folder" value="0" id="fhome" <?php
  91. if ($folder_id == 0) {
  92. echo ' checked="checked"';
  93. }
  94. ?>/><label for="fhome"><?php echo fs_get_workspace($owner_type, $owner_id); ?></label>
  95. <?php
  96. if ($folder_id == $current_folder_id) {
  97. echo ' '._AT('current_location');
  98. }
  99. ?>
  100. <?php fs_print_folders($folder_id, 0, $folders); ?>
  101. </li>
  102. </ul>
  103. </div>
  104. <div class="row buttons">
  105. <input type="submit" name="submit" value="<?php echo _AT('move'); ?>" />
  106. <input type="submit" name="cancel" value="<?php echo _AT('cancel'); ?>" />
  107. </div>
  108. </div>
  109. </form>
  110. <?php require(AT_INCLUDE_PATH.'footer.inc.php'); ?>