PageRenderTime 64ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/js/tinymce/plugins/tinybrowser/tinybrowser.php

http://github.com/imagecms/ImageCMS
PHP | 351 lines | 289 code | 35 blank | 27 comment | 55 complexity | 0795ec45da4e183fafce38afb1fa24a7 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0
  1. <?php
  2. require_once('config_tinybrowser.php');
  3. // Set language
  4. if(isset($tinybrowser['language']) && file_exists('langs/'.$tinybrowser['language'].'.php'))
  5. {
  6. require_once('langs/'.$tinybrowser['language'].'.php');
  7. }
  8. else
  9. {
  10. require_once('langs/en.php'); // Falls back to English
  11. }
  12. require_once('fns_tinybrowser.php');
  13. // Imagecms auth;
  14. define('CMS_BRIDGE', TRUE);
  15. define('ICMS_INIT', TRUE);
  16. define('ICMS_DISBALE_CSRF', TRUE);
  17. $ser = $_SERVER;
  18. $_SERVER['QUERY_STRING'] = '';
  19. require(realpath('../../../../system/cms_bridge.php'));
  20. $obj =& get_instance();
  21. if(!check_perm('tinybrowser_all'))
  22. {
  23. die('? ??? ???????????? ??????????. ?????????? ? ?????????????? ?????.');
  24. }
  25. $_SERVER = $ser;
  26. $query_string = $_SERVER['QUERY_STRING'];
  27. $get_array = array();
  28. parse_str($query_string,$get_array);
  29. foreach($get_array as $key => $val)
  30. {
  31. $_GET[$key] = $obj->input->xss_clean($val);
  32. $_REQUEST[$key] = $obj->input->xss_clean($val);
  33. }
  34. // end cms auth
  35. // Assign file operation variables
  36. $typenow = (isset($_GET['type']) ? $_GET['type'] : 'image');
  37. $standalone = ((isset($_GET['feid']) && $_GET['feid']!='') ? true : false);
  38. $foldernow = (isset($_REQUEST['folder']) ? urldecode($_REQUEST['folder']) : '');
  39. if($standalone)
  40. {
  41. $passfeid = '&feid='.$_GET['feid'];
  42. $rowhlightinit = ' onload="rowHighlight();"';
  43. }
  44. else
  45. {
  46. $passfeid = '';
  47. $rowhlightinit = '';
  48. }
  49. // Assign browsing options
  50. $sortbynow = (isset($_REQUEST['sortby']) ? $_REQUEST['sortby'] : $tinybrowser['order']['by']);
  51. $sorttypenow = (isset($_REQUEST['sorttype']) ? $_REQUEST['sorttype'] : $tinybrowser['order']['type']);
  52. $sorttypeflip = ($sorttypenow == 'asc' ? 'desc' : 'asc');
  53. $viewtypenow = (isset($_REQUEST['viewtype']) ? $_REQUEST['viewtype'] : $tinybrowser['view']['image']);
  54. $findnow = (isset($_POST['find']) && !empty($_POST['find']) ? $_POST['find'] : false);
  55. $showpagenow = (isset($_REQUEST['showpage']) ? $_REQUEST['showpage'] : 0);
  56. // Assign url pass variables
  57. $passfolder = '&folder='.urlencode($foldernow);
  58. $passfeid = (isset($_GET['feid']) && $_GET['feid']!='' ? '&feid='.$_GET['feid'] : '');
  59. $passfind = '&action='.$findnow;
  60. $passviewtype = '&viewtype='.$viewtypenow;
  61. $passsortby = '&sortby='.$sortbynow.'&sorttype='.$sorttypenow;
  62. // Assign view, thumbnail and link paths
  63. $browsepath = $tinybrowser['path'][$typenow].$foldernow;
  64. $linkpath = $tinybrowser['link'][$typenow].$foldernow;
  65. $thumbpath = $tinybrowser[$tinybrowser['thumbsrc']][$typenow].$foldernow;
  66. // Assign sort parameters for column header links
  67. $sortbyget = array();
  68. $sortbyget['name'] = '&viewtype='.$viewtypenow.'&sortby=name';
  69. $sortbyget['size'] = '&viewtype='.$viewtypenow.'&sortby=size';
  70. $sortbyget['type'] = '&viewtype='.$viewtypenow.'&sortby=type';
  71. $sortbyget['modified'] = '&viewtype='.$viewtypenow.'&sortby=modified';
  72. $sortbyget['dimensions'] = '&viewtype='.$viewtypenow.'&sortby=dimensions';
  73. $sortbyget[$sortbynow] .= '&sorttype='.$sorttypeflip;
  74. // Assign css style for current sort type column
  75. $thclass = array();
  76. $thclass['name'] = '';
  77. $thclass['size'] = '';
  78. $thclass['type'] = '';
  79. $thclass['modified'] = '';
  80. $thclass['dimensions'] = '';
  81. $thclass[$sortbynow] = ' class="'.$sorttypenow.'"';
  82. // Initalise alert array
  83. $notify = array(
  84. 'type' => array(),
  85. 'message' => array()
  86. );
  87. $newthumbqty = 0;
  88. // read folder contents if folder exists
  89. if(file_exists($tinybrowser['docroot'].$browsepath))
  90. {
  91. // Read directory contents and populate $file array
  92. $dh = opendir($tinybrowser['docroot'].$browsepath);
  93. $file = array();
  94. while (($filename = readdir($dh)) !== false)
  95. {
  96. if($filename != '.' && $filename != '..' && !is_dir($tinybrowser['docroot'].$browsepath.$filename) && $filename != 'index.html')
  97. {
  98. // search file name if search term entered
  99. if($findnow) $exists = stripos($filename,$findnow);
  100. // assign file details to array, for all files or those that match search
  101. if(!$findnow || ($findnow && $exists !== false))
  102. {
  103. $file['name'][] = $filename;
  104. $file['sortname'][] = strtolower($filename);
  105. $file['modified'][] = filemtime($tinybrowser['docroot'].$browsepath.$filename);
  106. $file['size'][] = filesize($tinybrowser['docroot'].$browsepath.$filename);
  107. // image specific info or general
  108. if($typenow=='image' && $imginfo = getimagesize($tinybrowser['docroot'].$browsepath.$filename))
  109. {
  110. $file['width'][] = $imginfo[0];
  111. $file['height'][] = $imginfo[1];
  112. $file['dimensions'][] = $imginfo[0] + $imginfo[1];
  113. $file['type'][] = $imginfo['mime'];
  114. // Check a thumbnail exists
  115. if(!file_exists($tinybrowser['docroot'].$browsepath.'_thumbs/')) createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
  116. $thumbimg = $tinybrowser['docroot'].$browsepath.'_thumbs/_'.$filename;
  117. if (!file_exists($thumbimg))
  118. {
  119. $nothumbimg = $tinybrowser['docroot'].$browsepath.$filename;
  120. $mime = getimagesize($nothumbimg);
  121. $im = convert_image($nothumbimg,$mime['mime']);
  122. resizeimage($im,$tinybrowser['thumbsize'],$tinybrowser['thumbsize'],$thumbimg,$tinybrowser['thumbquality'],$mime['mime']);
  123. imagedestroy($im);
  124. $newthumbqty++;
  125. }
  126. }
  127. else
  128. {
  129. $file['width'][] = 'N/A';
  130. $file['height'][] = 'N/A';
  131. $file['dimensions'][] = 'N/A';
  132. $file['type'][] = returnMIMEType($filename);
  133. }
  134. }
  135. }
  136. }
  137. closedir($dh);
  138. }
  139. // create file upload folder
  140. else
  141. {
  142. $success = createfolder($tinybrowser['docroot'].$browsepath,$tinybrowser['unixpermissions']);
  143. if($success)
  144. {
  145. if($typenow=='image') createfolder($tinybrowser['docroot'].$browsepath.'_thumbs/',$tinybrowser['unixpermissions']);
  146. $notify['type'][]='success';
  147. $notify['message'][]=sprintf(TB_MSGMKDIR, $browsepath);
  148. }
  149. else
  150. {
  151. $notify['type'][]='error';
  152. $notify['message'][]=sprintf(TB_MSGMKDIRFAIL, $browsepath);
  153. }
  154. }
  155. // Assign directory structure to array
  156. $browsedirs=array();
  157. dirtree($browsedirs,$tinybrowser['docroot'],$tinybrowser['path'][$typenow]);
  158. // generate alert if new thumbnails created
  159. if($newthumbqty>0)
  160. {
  161. $notify['type'][]='info';
  162. $notify['message'][]=sprintf(TB_MSGNEWTHUMBS, $newthumbqty);
  163. }
  164. // determine sort order
  165. $sortorder = ($sorttypenow == 'asc' ? SORT_ASC : SORT_DESC);
  166. $num_of_files = (isset($file['name']) ? count($file['name']) : 0);
  167. if($num_of_files>0)
  168. {
  169. // sort files by selected order
  170. sortfileorder($sortbynow,$sortorder,$file);
  171. }
  172. // determine pagination
  173. if($tinybrowser['pagination']>0)
  174. {
  175. $showpage_start = ($showpagenow ? ($_REQUEST['showpage']*$tinybrowser['pagination'])-$tinybrowser['pagination'] : 0);
  176. $showpage_end = $showpage_start+$tinybrowser['pagination'];
  177. if($showpage_end>$num_of_files) $showpage_end = $num_of_files;
  178. }
  179. else
  180. {
  181. $showpage_start = 0;
  182. $showpage_end = $num_of_files;
  183. }
  184. ?>
  185. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  186. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  187. <head>
  188. <title>TinyBrowser :: <?php echo TB_BROWSE; ?></title>
  189. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  190. <?php
  191. if(!$standalone && $tinybrowser['integration']=='tinymce')
  192. {
  193. ?><script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script><?php
  194. }
  195. else
  196. {
  197. ?><link rel="stylesheet" type="text/css" media="all" href="css/stylefull_tinybrowser.css" /><?php
  198. }
  199. ?>
  200. <link rel="stylesheet" type="text/css" media="all" href="css/style_tinybrowser.css.php" />
  201. <script language="javascript" type="text/javascript" src="js/tinybrowser.js.php?<?php echo substr($passfeid,1); ?>"></script>
  202. </head>
  203. <body<?php echo $rowhlightinit; ?>>
  204. <?php
  205. if(count($notify['type'])>0) alert($notify);
  206. form_open('foldertab',false,basename($_SERVER['SCRIPT_NAME']),'?type='.$typenow.$passviewtype.$passsortby.$passfeid);
  207. ?>
  208. <div class="tabs">
  209. <ul>
  210. <li id="browse_tab" class="current"><span><a href="tinybrowser.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_BROWSE; ?></a></span></li><?php
  211. if($tinybrowser['allowupload'])
  212. {
  213. ?><li id="upload_tab"><span><a href="upload.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_UPLOAD; ?></a></span></li><?php
  214. }
  215. if($tinybrowser['allowedit'] || $tinybrowser['allowdelete'])
  216. {
  217. ?><li id="edit_tab"><span><a href="edit.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_EDIT; ?></a></span></li><?php
  218. }
  219. if($tinybrowser['allowfolders'])
  220. {
  221. ?><li id="folders_tab"><span><a href="folders.php?type=<?php echo $typenow.$passfolder.$passfeid; ?>"><?php echo TB_FOLDERS; ?></a></span></li><?php
  222. }
  223. // Display folder select, if multiple exist
  224. if(count($browsedirs)>1)
  225. {
  226. ?><li id="folder_tab" class="right"><span><?php
  227. form_select($browsedirs,'folder',TB_FOLDERCURR,urlencode($foldernow),true);
  228. ?></span></li><?php
  229. }
  230. ?>
  231. </ul>
  232. </div>
  233. </form>
  234. <div class="panel_wrapper">
  235. <div id="general_panel" class="panel currentmod">
  236. <fieldset>
  237. <legend><?php echo TB_BROWSEFILES; ?></legend>
  238. <?php
  239. form_open('browse','custom',basename($_SERVER['SCRIPT_NAME']),'?type='.$typenow.$passfolder.$passfeid);
  240. ?>
  241. <div class="pushleft">
  242. <?php
  243. // Offer view type if file type is image
  244. if($typenow=='image')
  245. {
  246. $select = array(
  247. array('thumb',TB_THUMBS),
  248. array('detail',TB_DETAILS)
  249. );
  250. form_select($select,'viewtype',TB_VIEW,$viewtypenow,true);
  251. }
  252. // Show page select if pagination is set
  253. if($tinybrowser['pagination']>0)
  254. {
  255. $pagelimit = ceil($num_of_files/$tinybrowser['pagination'])+1;
  256. $page = array();
  257. for($i=1;$i<$pagelimit;$i++)
  258. {
  259. $page[] = array($i,TB_PAGE.' '.$i);
  260. }
  261. if($i>2) form_select($page,'showpage',TB_SHOW,$showpagenow,true);
  262. }
  263. ?></div><div class="pushright"><?php
  264. form_hidden_input('sortby',$sortbynow);
  265. form_hidden_input('sorttype',$sorttypenow);
  266. form_text_input('find',false,$findnow,25,50);
  267. form_submit_button('search',TB_SEARCH,'');
  268. ?></div>
  269. <?php
  270. // if image show dimensions header
  271. if($typenow=='image')
  272. {
  273. $imagehead = '<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['dimensions'].'"'.$thclass['dimensions'].'>'.TB_DIMENSIONS.'</a></th>';
  274. }
  275. else $imagehead = '';
  276. echo '<div class="tabularwrapper"><table class="browse">'
  277. .'<tr><th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['name'].'"'.$thclass['name'].'>'.TB_FILENAME.'</a></th>'
  278. .'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['size'].'"'.$thclass['size'].'>'.TB_SIZE.'</a></th>'
  279. .$imagehead
  280. .'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['type'].'"'.$thclass['type'].'>'.TB_TYPE.'</th>'
  281. .'<th><a href="?type='.$typenow.$passfolder.$passfeid.$sortbyget['modified'].'"'.$thclass['modified'].'>'.TB_DATE.'</th></tr>';
  282. // show image thumbnails, unless detail view is selected
  283. if($typenow=='image' && $viewtypenow != 'detail')
  284. {
  285. echo '</table></div>';
  286. for($i=$showpage_start;$i<$showpage_end;$i++)
  287. {
  288. echo '<div class="img-browser"><a href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.TB_FILENAME.': '.$file['name'][$i]
  289. .'&#13;&#10;'.TB_DIMENSIONS.': '.$file['width'][$i].' x '.$file['height'][$i]
  290. .'&#13;&#10;'.TB_DATE.': '.date($tinybrowser['dateformat'],$file['modified'][$i])
  291. .'&#13;&#10;'.TB_TYPE.': '.$file['type'][$i]
  292. .'&#13;&#10;'.TB_SIZE.': '.bytestostring($file['size'][$i],1)
  293. .'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i]
  294. .'" /><div class="filename">'.$file['name'][$i].'</div></a></div>';
  295. }
  296. }
  297. else
  298. {
  299. for($i=$showpage_start;$i<$showpage_end;$i++)
  300. {
  301. $alt = (IsOdd($i) ? 'r1' : 'r0');
  302. echo '<tr class="'.$alt.'">';
  303. if($typenow=='image') echo '<td><a class="imghover" href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'"><img src="'.$thumbpath.'_thumbs/_'.$file['name'][$i].'" alt="" />'.truncate_text($file['name'][$i],30).'</a></td>';
  304. else echo '<td><a href="#" onclick="selectURL(\''.$linkpath.$file['name'][$i].'\');" title="'.$file['name'][$i].'">'.truncate_text($file['name'][$i],30).'</a></td>';
  305. echo '<td>'.bytestostring($file['size'][$i],1).'</td>';
  306. if($typenow=='image') echo '<td>'.$file['width'][$i].' x '.$file['height'][$i].'</td>';
  307. echo '<td>'.$file['type'][$i].'</td>'
  308. .'<td>'.date($tinybrowser['dateformat'],$file['modified'][$i]).'</td></tr>'."\n";
  309. }
  310. echo '</table></div>';
  311. }
  312. ?>
  313. </fieldset></div></div>
  314. <form name="passform"><input name = "fileurl" type="hidden" value= "" /></form>
  315. </body>
  316. </html>