PageRenderTime 39ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/blocks/file_manager/view.php

https://github.com/galitush2005/RTL-BIDI-Hebrew-Moodle-Plugins
PHP | 282 lines | 207 code | 32 blank | 43 comment | 38 complexity | bbf9e801342f494bf8901c91b633dd02 MD5 | raw file
  1. <?php
  2. /**
  3. * view.php
  4. *
  5. * This file allows a user to view a list of their links and
  6. * Gives them the ability to manage many aspects of their files,
  7. * Including sharing to other users, organizing, submitting to
  8. * course assignments, etc.
  9. *
  10. * @package block_file_manager
  11. * @category blocks
  12. */
  13. // include("debugging.php");
  14. require_once("../../config.php");
  15. require_once($CFG->dirroot.'/blocks/file_manager/lib.php');
  16. require_once($CFG->dirroot.'/blocks/file_manager/print_lib.php');
  17. $id = required_param('id', PARAM_INT); // The Id of the current course
  18. $rootdir = optional_param('rootdir', '0', PARAM_INT); // 0 == root
  19. $groupid = optional_param('groupid', '0', PARAM_INT); // 0 == no group then display user's directory
  20. $action = optional_param('what', '', PARAM_ACTION);
  21. $readonlyaccess = false; // Says if we are in read-only access
  22. if (! $course = get_record('course', 'id', $id) ) {
  23. error('That\'s an invalid course id', "view.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$rootdir}");
  24. }
  25. require_login($course->id);
  26. $coursecontext = get_context_instance(CONTEXT_COURSE, $id);
  27. $canmanagegroups = has_capability('block/file_manager:canmanagegroups', $coursecontext);
  28. $cb = fm_clean_checkbox_array();
  29. if ($cb != NULL) {
  30. $USER->fm_cb = $cb;
  31. }
  32. /// Ensures the user is able to view the fmanager
  33. fm_check_access_rights($course->id);
  34. if ($groupid == 0){
  35. // Ensures user owns the folder
  36. fm_user_owns_folder($rootdir);
  37. } else {
  38. // Ensures group owns the folder
  39. fm_group_owns_folder($rootdir, $groupid);
  40. // Depending on the groupmode, ensures that the user is member of the group and is allowed to access
  41. if (function_exists('build_navigation')){
  42. $groupmode = groups_get_course_groupmode($course);
  43. } else {
  44. // 1.8 backward compatibility
  45. // TODO : remove that option in further releases
  46. $groupmode = groupmode($course);
  47. }
  48. switch ($groupmode){
  49. case NOGROUPS :
  50. // Should no to be there ...
  51. error(get_string('errnogroups', 'block_file_manager'), "{$CFG->wwwroot}/course/view.php?id={$course->id}");
  52. break;
  53. case SEPARATEGROUPS :
  54. if (!$canmanagegroups && !groups_is_member($groupid)){ // Must check if the user is member of that group
  55. error(get_string('errnotmember', 'block_file_manager'), "{$CFG->wwwroot}/course/view.php?id={$course->id}");
  56. }
  57. break;
  58. case VISIBLEGROUPS :
  59. if (!$canmanagegroups && !groups_is_member($groupid)){ // It is ok, no check needed for read-only access
  60. $readonlyaccess = true;
  61. }
  62. break;
  63. }
  64. }
  65. if (isset($_POST['newlink'])) {
  66. redirect("link_manage.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$rootdir}");
  67. } elseif (isset($_POST['newfolder'])) {
  68. redirect("folder_manage.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$rootdir}");
  69. } elseif (isset($_POST['btnmovehere'])) {
  70. $cb = $USER->fm_cb;
  71. foreach($cb as $c) {
  72. fm_move_to_folder($c, $rootdir, $groupid);
  73. }
  74. }
  75. // Prints the folders breadcrumb navigation links
  76. $nav = array();
  77. $tmplink = '';
  78. if ($rootdir != 0) { // if we are in another folder than the root of the user or group
  79. $folder = get_record('fmanager_folders', 'id', $rootdir);
  80. $tmplink = $action;
  81. if ($action != '') {
  82. $tmplink = '&amp;what='.$tmplink;
  83. }
  84. while ($folder->pathid != 0) {
  85. $nav[] = array('name'=>format_text($folder->name,FORMAT_PLAIN), 'link'=>"view.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$folder->id}{$tmplink}", 'type'=>'misc');
  86. $folder = get_record('fmanager_folders','id',$folder->pathid);
  87. }
  88. $nav[] = array('name'=>format_text($folder->name,FORMAT_PLAIN), 'link'=>"view.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$folder->id}{$tmplink}", 'type'=>'misc');
  89. }
  90. $strtitle = get_string('filemanager','block_file_manager');
  91. $nav[] = array('name'=>$strtitle, 'link'=>"view.php?id={$id}&amp;groupid={$groupid}&amp;rootdir={$tmplink}", 'type'=>'misc');
  92. $nav = array_reverse($nav);
  93. $nav[] = array('name'=>get_string('myfiles', 'block_file_manager'), 'link'=>null, 'type'=>'misc');
  94. $navigation = build_navigation($nav);
  95. print_header($strtitle, format_string($course->fullname), $navigation, "", "", false, "&nbsp;", "&nbsp;");
  96. if (right_to_left()) { // rtl support for table cell alignment (nadavkav patch)
  97. $alignmentleft = 'right';
  98. $alignmentright = 'left';
  99. } else {
  100. $alignmentleft = 'left';
  101. $alignmentright = 'right';
  102. }
  103. // start page content
  104. print_heading(get_string('myfiles', 'block_file_manager'));
  105. if ($readonlyaccess){
  106. print_simple_box( text_to_html(get_string('msgreadonly', 'block_file_manager')) , 'center', '620');
  107. }
  108. echo "<br/>";
  109. print_simple_box( text_to_html(get_string('msgexplainmanager','block_file_manager')) , 'center', '620');
  110. echo "<br/>";
  111. echo fm_print_js_select();
  112. echo fm_print_js_amenu();
  113. ?>
  114. <div style="<?php echo $alignmentleft; ?>">
  115. <form name="linkform" action="view.php" method="post">
  116. <input type="hidden" name="id" value="<?php p($id) ?>" />
  117. <input type="hidden" name="groupid" value="<?php p($groupid) ?>" />
  118. <input type="hidden" name="rootdir" value="<?php p($rootdir) ?>" />
  119. <i>
  120. <?php
  121. switch($action) {
  122. case 'movesel':
  123. $count = 0;
  124. foreach ($USER->fm_cb as $c) {
  125. if ($c != 0 || substr($c,0,2) == "f-") {
  126. $count++;
  127. }
  128. }
  129. echo $count.get_string('msgmovetohere','block_file_manager');
  130. break;
  131. }
  132. ?>
  133. </i>
  134. </div>
  135. <?php
  136. if ($groupid == 0){
  137. // Prints user files management form
  138. print_table(fm_print_user_files_form($id, $rootdir, $action,0,$readonlyaccess));
  139. // Prints how much space user has left
  140. $tmpdir = $CFG->dataroot."/".fm_get_user_dir_space();
  141. } else {
  142. // Prints group files management form
  143. print_table(fm_print_user_files_form($id, $rootdir, $action, $groupid,$readonlyaccess));
  144. // Prints how much space group has left
  145. $tmpdir = $CFG->dataroot."/".fm_get_group_dir_space($groupid);
  146. }
  147. $dirsize = fm_get_size($tmpdir, 1);
  148. $usertype = fm_get_user_int_type();
  149. $adminsettings = get_record('fmanager_admin', 'usertype', $usertype);
  150. $sizeleft = get_string('directorysize', 'block_file_manager') .': <b><i>'.fm_readable_filesize($dirsize)."</i></b>";
  151. // Defaults to dirsize if unlimited space
  152. if ($adminsettings->maxdir != 0) {
  153. $sizeleft = ($adminsettings->maxdir * (1048576)) - $dirsize;
  154. $sizeleft = fm_readable_filesize($sizeleft);
  155. $sizeleft = get_string('remains', 'block_file_manager', $sizeleft);
  156. }
  157. echo "<p align=\"$alignmentleft\">$sizeleft</p>";
  158. echo "<center>";
  159. if ($action == 'movesel') {
  160. echo "<input type=\"submit\" value=\"".get_string('btnmovehere','block_file_manager')."\" name=\"btnmovehere\">&nbsp;&nbsp;";
  161. }
  162. if (!$readonlyaccess) {
  163. ?>
  164. <table align="<?php echo $alignmentleft; ?>" width="10%">
  165. <tr>
  166. <td width="5%">&nbsp;
  167. </td>
  168. <td>
  169. <?php echo fm_print_actions_menu($id, 'link', $rootdir, $groupid) ?>
  170. </td>
  171. <td>
  172. <?php helpbutton('myfilesaction', get_string('menuhelp', 'block_file_manager'), 'block_file_manager'); ?>
  173. </td>
  174. </tr>
  175. </table>
  176. <br />
  177. <br />
  178. <?php
  179. }
  180. if (!$readonlyaccess) {
  181. ?>
  182. <input type="submit" value="<?php print_string('btnnewfolder', 'block_file_manager') ?>" name="newfolder" />
  183. &nbsp;
  184. &nbsp;
  185. <input type="submit" value="<?php print_string('btnnewlink', 'block_file_manager') ?>" name="newlink" />
  186. </center>
  187. </form>
  188. <?php
  189. }
  190. echo "<br/><br/><br/>";
  191. if (!$readonlyaccess) {
  192. ?>
  193. <form name="catform" action="cat_manage.php" method="post">
  194. <input type="hidden" name="id" value="<?php p($id) ?>" />
  195. <input type="hidden" name="groupid" value="<?php p($groupid) ?>" />
  196. <input type="hidden" name="rootdir" value="<?php p($rootdir) ?>" />
  197. <div class="categories" style="text-align:right;">
  198. <br /><br />
  199. <?php
  200. /*
  201. $tablehead = get_string('categories', 'block_file_manager');
  202. $table->head = array($tablehead);
  203. $table->align = array("left");
  204. $table->width = "400";
  205. $table->size = array("100%");
  206. $table->wrap = array('no');
  207. $table->data = array();
  208. $actions_menu = fm_print_actions_menu($id, 'category', $rootdir)." ".helpbutton('mycataction', get_string('menuhelp', 'block_file_manager'), 'filemanager');
  209. $table->data[] = array($actions_menu);
  210. print_table($table);
  211. */
  212. ?>
  213. <?php
  214. }
  215. // Displays the Category list table
  216. echo "<div style=\"text-align:$alignmentleft\">";
  217. print_table(fm_print_category_list($id, $rootdir, $groupid,$readonlyaccess));
  218. if (!$readonlyaccess) {
  219. ?>
  220. <table class="actions" align="<?php echo $alignmentleft; ?>" width="20%">
  221. <tr>
  222. <td width="5%">&nbsp;</td>
  223. <td colspan="2">
  224. <?php echo "<strong>".get_string('categories', 'block_file_manager')."</strong><br />"; ?>
  225. </td>
  226. </tr>
  227. <tr>
  228. <td width="5%">&nbsp;</td>
  229. <td>
  230. <?php echo fm_print_actions_menu($id, 'category', $rootdir, $groupid); ?>
  231. </td>
  232. <td>
  233. <?php helpbutton('mycataction', get_string('menuhelp', 'block_file_manager'), 'block_file_manager'); ?>
  234. </td>
  235. </tr>
  236. </table>
  237. <input type="submit" value="<?php print_string('btncreatenewcat', 'block_file_manager') ?>" name="newcat" />
  238. </div>
  239. </form>
  240. <br />
  241. <br />
  242. </div>
  243. <?php
  244. }
  245. //print_footer($course);
  246. print_footer();
  247. ?>