PageRenderTime 50ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/simple-forum/editors/tinymce/plugins/filemanager/fm-browse-tab.php

https://bitbucket.org/crypticrod/sr_wp_code
PHP | 360 lines | 319 code | 23 blank | 18 comment | 41 complexity | e857bdde3ec18601b27de8601660f52f MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, LGPL-2.1, GPL-3.0, LGPL-2.0, AGPL-3.0
  1. <?php
  2. require_once(dirname(__FILE__).'/fm-config.php'); # cant us SF constant until after config file read
  3. require_once(SFFMDIR.'fm-support.php');
  4. # Get the upload type
  5. $validtypes = array('image','media','file');
  6. $typenow = ((isset($_GET['type']) && in_array(sf_esc_str($_GET['type']),$validtypes)) ? sf_esc_str($_GET['type']) : 'image');
  7. # Double check credentials
  8. if(sffm_validateuser($current_user, $typenow) == false)
  9. {
  10. die('Access Denied');
  11. }
  12. # Initalise alert array
  13. $notify = array(
  14. 'type' => array(),
  15. 'message' => array()
  16. );
  17. # Assign file operation variables
  18. $foldernow = str_replace(array('../','..\\','./','.\\'),'',($filemanager['allowfolders'] && isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : ''));
  19. $foldernow = str_replace($filemanager['path'][$typenow], '', $foldernow);
  20. $rowhlightinit = '';
  21. # Assign browsing options
  22. $sortbynow = (isset($_REQUEST['sortby']) ? sf_esc_str($_REQUEST['sortby']) : $filemanager['order']['by']);
  23. $sorttypenow = (isset($_REQUEST['sorttype']) ? sf_esc_str($_REQUEST['sorttype']) : $filemanager['order']['type']);
  24. $sorttypeflip = ($sorttypenow == 'asc' ? 'desc' : 'asc');
  25. $viewtypenow = (isset($_REQUEST['viewtype']) ? sf_esc_str($_REQUEST['viewtype']) : $filemanager['view']['image']);
  26. $findnow = (isset($_POST['find']) && !empty($_POST['find']) ? sf_esc_str($_POST['find']) : false);
  27. $showpagenow = (isset($_REQUEST['showpage']) ? sf_esc_int($_REQUEST['showpage']) : 0);
  28. # Assign url pass variables
  29. $passfolder = '&folder='.urlencode($foldernow);
  30. $passviewtype = '&viewtype='.$viewtypenow;
  31. $passsortby = '&sortby='.$sortbynow.'&sorttype='.$sorttypenow;
  32. # Assign view, thumbnail and link paths
  33. $browsepath = $filemanager['path'][$typenow].$foldernow;
  34. $linkpath = $filemanager['link'][$typenow].$foldernow;
  35. $thumbpath = $filemanager[$filemanager['thumbsrc']][$typenow].$foldernow;
  36. # Assign sort parameters for column header links
  37. $sortbyget = array();
  38. $sortbyget['name'] = '&viewtype='.$viewtypenow.'&sortby=name';
  39. $sortbyget['size'] = '&viewtype='.$viewtypenow.'&sortby=size';
  40. $sortbyget['type'] = '&viewtype='.$viewtypenow.'&sortby=type';
  41. $sortbyget['modified'] = '&viewtype='.$viewtypenow.'&sortby=modified';
  42. $sortbyget['dimensions'] = '&viewtype='.$viewtypenow.'&sortby=dimensions';
  43. $sortbyget[$sortbynow] .= '&sorttype='.$sorttypeflip;
  44. # Assign css style for current sort type column
  45. $thclass = array();
  46. $thclass['name'] = '';
  47. $thclass['size'] = '';
  48. $thclass['type'] = '';
  49. $thclass['modified'] = '';
  50. $thclass['dimensions'] = '';
  51. $thclass[$sortbynow] = ' class="'.$sorttypenow.'"';
  52. $newthumbqty = 0;
  53. # read folder contents if folder exists
  54. if(file_exists($filemanager['docroot'].$browsepath))
  55. {
  56. # Read directory contents and populate $file array
  57. $dh = opendir($filemanager['docroot'].$browsepath);
  58. $file = array();
  59. while (($filename = readdir($dh)) !== false)
  60. {
  61. # get file extension
  62. $nameparts = explode('.',$filename);
  63. $ext = end($nameparts);
  64. # filter directories and prohibited file types
  65. if($filename != '.' && $filename != '..' && !is_dir($filemanager['docroot'].$browsepath.$filename) && !in_array($ext, $filemanager['prohibited']) && ($typenow == 'file' || strpos(strtolower($filemanager['filetype'][$typenow]),strtolower($ext))))
  66. {
  67. # search file name if search term entered
  68. if($findnow) $exists = strpos(strtolower($filename),strtolower($findnow));
  69. # assign file details to array, for all files or those that match search
  70. if(!$findnow || ($findnow && $exists !== false))
  71. {
  72. $file['name'][] = $filename;
  73. $file['sortname'][] = strtolower($filename);
  74. $file['modified'][] = filemtime($filemanager['docroot'].$browsepath.$filename);
  75. $file['size'][] = filesize($filemanager['docroot'].$browsepath.$filename);
  76. # image specific info or general
  77. if($typenow=='image' && $imginfo = getimagesize($filemanager['docroot'].$browsepath.$filename))
  78. {
  79. $file['width'][] = $imginfo[0];
  80. $file['height'][] = $imginfo[1];
  81. $file['dimensions'][] = $imginfo[0] + $imginfo[1];
  82. $file['type'][] = $imginfo['mime'];
  83. # Check a thumbnail exists
  84. if(!file_exists($filemanager['docroot'].$browsepath.'_thumbs/')) sffm_createfolder($filemanager['docroot'].$browsepath.'_thumbs/',$filemanager['unixpermissions']);
  85. $thumbimg = $filemanager['docroot'].$browsepath.'_thumbs/_'.$filename;
  86. if (!file_exists($thumbimg))
  87. {
  88. $nothumbimg = $filemanager['docroot'].$browsepath.$filename;
  89. $mime = getimagesize($nothumbimg);
  90. $im = sffm_convert_image($nothumbimg,$mime['mime']);
  91. sffm_resizeimage($im,$filemanager['thumbsize'],$filemanager['thumbsize'],$thumbimg,$filemanager['thumbquality'],$mime['mime']);
  92. imagedestroy($im);
  93. $newthumbqty++;
  94. }
  95. } else {
  96. $file['width'][] = 'N/A';
  97. $file['height'][] = 'N/A';
  98. $file['dimensions'][] = 'N/A';
  99. $file['type'][] = sffm_returnMIMEType($filename);
  100. }
  101. }
  102. }
  103. }
  104. closedir($dh);
  105. } else {
  106. # create file upload folder
  107. $success = sffm_createfolder($filemanager['docroot'].$browsepath,$filemanager['unixpermissions']);
  108. $userdir = str_replace('\\', '/', $browsepath);
  109. $userdir = preg_replace('/\/+$/', '', $userdir);
  110. $userdir = explode('/', $userdir);
  111. $l = count($userdir) - 1;
  112. if($success)
  113. {
  114. if($typenow=='image') sffm_createfolder($filemanager['docroot'].$browsepath.'_thumbs/',$filemanager['unixpermissions']);
  115. $notify['type'][]='success';
  116. $notify['message'][]=sprintf(FM_MSGMKDIR, $userdir[$l]);
  117. } else {
  118. $notify['type'][]='error';
  119. $notify['message'][]=sprintf(FM_MSGMKDIRFAIL, $userdir[$l]);
  120. }
  121. }
  122. # Assign directory structure to array
  123. $browsedirs=array();
  124. sffm_dirtree($browsedirs,$filemanager['filetype'][$typenow],$filemanager['docroot'],$filemanager['path'][$typenow]);
  125. # generate alert if new thumbnails created
  126. if($newthumbqty>0)
  127. {
  128. $notify['type'][]='info';
  129. $notify['message'][]=sprintf(FM_MSGNEWTHUMBS, $newthumbqty);
  130. }
  131. # determine sort order
  132. $sortorder = ($sorttypenow == 'asc' ? SORT_ASC : SORT_DESC);
  133. $num_of_files = (isset($file['name']) ? count($file['name']) : 0);
  134. if($num_of_files>0)
  135. {
  136. # sort files by selected order
  137. sffm_sortfileorder($sortbynow,$sortorder,$file);
  138. }
  139. # determine pagination
  140. if($filemanager['pagination']>0)
  141. {
  142. $showpage_start = ($showpagenow ? (sf_esc_int($_REQUEST['showpage'])*$filemanager['pagination'])-$filemanager['pagination'] : 0);
  143. $showpage_end = $showpage_start+$filemanager['pagination'];
  144. if($showpage_end>$num_of_files) $showpage_end = $num_of_files;
  145. } else {
  146. $showpage_start = 0;
  147. $showpage_end = $num_of_files;
  148. }
  149. # urls for the forms and tabs
  150. $fmThisForm = 'fm-browse-tab.php';
  151. $fmBrowseTab = 'fm-browse-tab.php?type='.$typenow.$passfolder;
  152. $fmUploadTab = 'fm-upload-tab.php?type='.$typenow.$passfolder;
  153. $fmEditTab = 'fm-edit-tab.php?type='.$typenow.$passfolder;
  154. $fmFolderTab = 'fm-folder-tab.php?type='.$typenow.$passfolder;
  155. ?>
  156. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  157. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  158. <head>
  159. <title>Simple:Press File Manager : <?php echo FM_BROWSE; ?></title>
  160. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo(get_option('blog_charset')); ?>" />
  161. <meta http-equiv="Pragma" content="no-cache" />
  162. <script language="javascript" type="text/javascript" src="<?php echo($filemanager['tmpath'].'tiny_mce_popup.js'); ?>"></script>
  163. <link rel="stylesheet" type="text/css" media="all" href="<?php echo $filemanager['tinymcecss']; ?>" />
  164. <link rel="stylesheet" type="text/css" media="all" href="<?php echo($filemanager['csspath'].'filemanager-tm.css.php'); ?>" />
  165. </head>
  166. <body<?php echo $rowhlightinit; ?>>
  167. <?php
  168. if(count($notify['type'])>0) sffm_alert($notify);
  169. sffm_form_open('foldertab',false,$fmThisForm,'?type='.$typenow.$passviewtype.$passsortby);
  170. ?>
  171. <div class="tabs">
  172. <ul>
  173. <li id="browse_tab" class="current"><span><a href="<?php echo $fmBrowseTab ?>"><?php echo FM_BROWSE; ?></a></span></li><?php
  174. if($filemanager['allowupload'])
  175. {
  176. ?><li id="upload_tab"><span><a href="<?php echo $fmUploadTab ?>"><?php echo FM_UPLOAD; ?></a></span></li><?php
  177. }
  178. if($filemanager['isadmin'])
  179. {
  180. ?><li id="edit_tab"><span><a href="<?php echo $fmEditTab ?>"><?php echo FM_EDIT; ?></a></span></li><?php
  181. }
  182. if($filemanager['allowfolders'])
  183. {
  184. ?><li id="folders_tab"><span><a href="<?php echo $fmFolderTab ?>"><?php echo FM_FOLDERS; ?></a></span></li><?php
  185. }
  186. # Display folder select, if multiple exist
  187. if(count($browsedirs)>1)
  188. {
  189. ?><li id="folder_tab" class="right"><span><?php
  190. sffm_form_select($browsedirs,'folder',FM_FOLDERCURR,urlencode($foldernow),true);
  191. ?></span></li><?php
  192. }
  193. ?>
  194. </ul>
  195. </div>
  196. </form>
  197. <div class="panel_wrapper">
  198. <div id="general_panel" class="panel currentmod">
  199. <fieldset>
  200. <legend><?php echo FM_BROWSEFILES; ?></legend>
  201. <?php
  202. sffm_form_open('browse','custom',$fmThisForm,'?type='.$typenow.$passfolder);
  203. ?>
  204. <div class="pushleft">
  205. <?php
  206. # Offer view type if file type is image
  207. if($typenow=='image')
  208. {
  209. $select = array(
  210. array('thumb',FM_THUMBS),
  211. array('detail',FM_DETAILS)
  212. );
  213. sffm_form_select($select,'viewtype',FM_VIEW,$viewtypenow,true);
  214. }
  215. # Show page select if pagination is set
  216. if($filemanager['pagination']>0)
  217. {
  218. $pagelimit = ceil($num_of_files/$filemanager['pagination'])+1;
  219. $page = array();
  220. for($i=1;$i<$pagelimit;$i++)
  221. {
  222. $page[] = array($i,FM_PAGE.' '.$i);
  223. }
  224. if($i>2) sffm_form_select($page,'showpage',FM_SHOW,$showpagenow,true);
  225. }
  226. ?></div><div class="pushright"><?php
  227. sffm_form_hidden_input('sortby',$sortbynow);
  228. sffm_form_hidden_input('sorttype',$sorttypenow);
  229. sffm_form_text_input('find',false,$findnow,25,50);
  230. sffm_form_submit_button('search',FM_SEARCH,'');
  231. ?></div>
  232. <?php
  233. # if image show dimensions header
  234. if($typenow=='image')
  235. {
  236. $imagehead = '<th><a href="?type='.$typenow.$passfolder.$sortbyget['dimensions'].'"'.$thclass['dimensions'].'>'.FM_DIMENSIONS.'</a></th>'."\n";
  237. }
  238. else $imagehead = '';
  239. echo '<div class="tabularwrapper"><table class="browse">'
  240. .'<tr><th><a href="?type='.$typenow.$passfolder.$sortbyget['name'].'"'.$thclass['name'].'>'.FM_FILENAME.'</a></th>'
  241. .'<th><a href="?type='.$typenow.$passfolder.$sortbyget['size'].'"'.$thclass['size'].'>'.FM_SIZE.'</a></th>'
  242. .$imagehead
  243. .'<th><a href="?type='.$typenow.$passfolder.$sortbyget['type'].'"'.$thclass['type'].'>'.FM_TYPE.'</th>'
  244. .'<th><a href="?type='.$typenow.$passfolder.$sortbyget['modified'].'"'.$thclass['modified'].'>'.FM_DATE.'</th></tr>';
  245. # show image thumbnails, unless detail view is selected
  246. if($typenow=='image' && $viewtypenow != 'detail')
  247. {
  248. echo '</table></div>'."\n";
  249. for($i=$showpage_start;$i<$showpage_end;$i++)
  250. {
  251. echo '<div class="img-browser"><a href="#" onclick="sffmselectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.FM_FILENAME.': '.$file['name'][$i]
  252. .'&#13;&#10;'.FM_DIMENSIONS.': '.$file['width'][$i].' x '.$file['height'][$i]
  253. .'&#13;&#10;'.FM_DATE.': '.date($filemanager['dateformat'],$file['modified'][$i])
  254. .'&#13;&#10;'.FM_TYPE.': '.$file['type'][$i]
  255. .'&#13;&#10;'.FM_SIZE.': '.sffm_bytestostring($file['size'][$i],1)
  256. .'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i]
  257. .'" /><div class="filename">'.$file['name'][$i].'</div></a></div>'."\n";
  258. }
  259. } else {
  260. for($i=$showpage_start;$i<$showpage_end;$i++)
  261. {
  262. $alt = (sffm_IsOdd($i) ? 'r1' : 'r0');
  263. echo '<tr class="'.$alt.'">';
  264. if($typenow=='image') echo '<td><a class="imghover" href="#" onclick="sffmselectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i].'" alt="" />'.sffm_truncate_text($file['name'][$i],30).'</a></td>'."\n";
  265. else echo '<td><a href="#" onclick="sffmselectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'">'.sffm_truncate_text($file['name'][$i],30).'</a></td>'."\n";
  266. echo '<td>'.sffm_bytestostring($file['size'][$i],1).'</td>'."\n";
  267. if($typenow=='image') echo '<td>'.$file['width'][$i].' x '.$file['height'][$i].'</td>'."\n";
  268. echo '<td>'.$file['type'][$i].'</td>'."\n"
  269. .'<td>'.date($filemanager['dateformat'],$file['modified'][$i]).'</td></tr>'."\n";
  270. }
  271. echo '</table></div>'."\n";
  272. }
  273. ?>
  274. </fieldset></div></div>
  275. <form name="passform"><input name = "fileurl" type="hidden" value= "" /></form>
  276. </body>
  277. </html>
  278. <!-- Supporting Javascript -->
  279. <script type="text/javascript">
  280. rowHighlight = function()
  281. {
  282. var x = document.getElementsByTagName('tr');
  283. for (var i=0;i<x.length;i++)
  284. {
  285. x[i].onmouseover = function () {this.className = "over " + this.className;}
  286. x[i].onmouseout = function () {this.className = this.className.replace("over", ""); this.className = this.className.replace(" ", "");}
  287. }
  288. var y = document.getElementsByTagName('th');
  289. for (var ii=0;ii<y.length;ii++)
  290. {
  291. y[ii].onmouseover = function () {if(this.className != "nohvr") this.className = "over " + this.className;}
  292. y[ii].onmouseout = function () {this.className = this.className.replace("over", ""); this.className = this.className.replace(" ", "");}
  293. }
  294. }
  295. function sffmselectURL(url)
  296. {
  297. document.passform.fileurl.value = url;
  298. FileBrowserDialogue.mySubmit();
  299. }
  300. var FileBrowserDialogue = {
  301. init : function () {
  302. rowHighlight();
  303. },
  304. mySubmit : function () {
  305. var URL = document.passform.fileurl.value;
  306. var win = tinyMCEPopup.getWindowArg("window");
  307. win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
  308. if (typeof(win.ImageDialog) != "undefined" && document.URL.indexOf('type=image') != -1)
  309. {
  310. if (win.ImageDialog.getImageData) win.ImageDialog.getImageData();
  311. if (win.ImageDialog.showPreviewImage) win.ImageDialog.showPreviewImage(URL);
  312. }
  313. tinyMCEPopup.close();
  314. }
  315. }
  316. tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);
  317. </script>
  318. <?php die(); ?>