/sitemanager/spaw/plugins/spawfm/dialogs/spawfm.inc.php
PHP | 508 lines | 429 code | 42 blank | 37 comment | 65 complexity | 090597144b2903361479691815c6133c MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0
- <?php
- error_reporting(E_ALL);
- function dbg($var) {
- echo '<pre>';
- print_r($var);
- echo '</pre>';
- }
-
- /////////////////////////////////////
-
- $lang->setModule('spawfm');
-
- // load environment variables
- $settings = $config->getConfigValue('PG_SPAWFM_SETTINGS');
- $filetypes = $config->getConfigValue('PG_SPAWFM_FILETYPES');
- $dir_list = $config->getConfigValue('PG_SPAWFM_DIRECTORIES');
- $doc_root = $config->getConfigValue('DOCUMENT_ROOT');
- if (preg_match('|[\\/]$|', $doc_root))
- $doc_root = substr($doc_root, 0, -1);
- $imgdir = $config->getConfigValue('SPAW_DIR').'plugins/spawfm/lib/theme/'.$theme->name.'/img/';
-
- require_once($config->getConfigValue('SPAW_ROOT').'plugins/spawfm/class/spawfm.class.php');
- $spawfm = new SpawFm();
-
- $error_msg = '';
-
- // set default "global" settings if not set by user
- if (!isset($settings['allow_upload']))
- $settings['allow_upload'] = false;
- if (!isset($settings['allow_modify']))
- $settings['allow_modify'] = false;
- if (!isset($settings['max_upload_filesize']))
- $settings['max_upload_filesize'] = 0;
- if (!isset($settings['allowed_filetypes']))
- $settings['allowed_filetypes'] = array('any');
- if (!isset($settings['chmod_to']))
- $settings['chmod_to'] = false;
- if (!isset($settings['max_img_width']))
- $settings['max_img_width'] = 0;
- if (!isset($settings['max_img_height']))
- $settings['max_img_height'] = 0;
- if (!isset($settings['recursive']))
- $settings['recursive'] = false;
- if (!isset($settings['allow_modify_subdirectories']))
- $settings['allow_modify_subdirectories'] = false;
- if (!isset($settings['allow_create_subdirectories']))
- $settings['allow_create_subdirectories'] = false;
-
- // fetch context variables
- $tmp = explode($config->getConfigValue('spawfm_path_separator'), SpawVars::getPostVar('dir') ? SpawVars::getPostVar('dir') : SpawVars::getGetVar('dir'));
- $curr_dir = SpawFm::normalizeDir($tmp[0], true);
- $curr_dir_subdir = isset($tmp[1]) ? $tmp[1] : false;
-
- $curr_type = SpawVars::getPostVar('type') ? SpawVars::stripSlashes(SpawVars::getPostVar('type')) : SpawVars::stripSlashes(SpawVars::getGetVar('type'));
- if ($curr_type == '*')
- $curr_type = false;
- $type_fixed = SpawVars::getGetVar('nofilter');
-
- // build directories list, determine selected option
- $dirs = array();
- $curr_dir_pos = false;
- $all_types = array();
- foreach ($dir_list as $dirpos=>$dirdef) {
- if (is_string($dirdef)) { // simple dir definition
- $dir = $caption = $dirdef;
- $dir = SpawFm::normalizeDir($dir);
- $fsdir = $doc_root.$dir;
- $params = $settings;
- } elseif (is_array($dirdef) and isset($dirdef['dir'])) { // advanced dir definition
- $dir = $dirdef['dir'];
- $caption = (!empty($dirdef['caption'])) ? $dirdef['caption'] : $dir;
- $params = (!empty($dirdef['params'])) ? array_merge($settings, $dirdef['params']) : $settings;
- $dir = SpawFm::normalizeDir($dir);
- if (empty($dirdef['fsdir'])) {
- $fsdir = $doc_root.$dir;
- } else {
- $fsdir = SpawFm::normalizeDir($dirdef['fsdir'], false, true);
- }
- } else {
- $dir = false;
- }
-
- if ($dir and file_exists($fsdir)) {
- $dir_data = array(
- 'dir' => $dir,
- 'fsdir' => $fsdir,
- 'caption' => $caption,
- 'params' => $params,
- );
- $dirs[] = $dir_data;
- // set default dir if needed
- if (!$curr_dir and !empty($params['default_dir'])) {
- $curr_dir = $dir;
- }
-
- // track filetypes allowed
- if (is_array($params['allowed_filetypes'])) {
- $all_types = array_merge($all_types, $params['allowed_filetypes']);
- } else {
- $all_types[] = $params['allowed_filetypes'];
- }
-
- // load current directory data
- if ($dir == $curr_dir) {
- $spawfm->setCurrentDirData($dir_data);
- $curr_dir_pos = $dirpos;
- }
- }
- }
-
- // cleanup filetypes array
- $all_types = array_unique($all_types);
- foreach ($all_types as $key=>$type) {
- if ($type{0} == '.' or $type == 'any' or !isset($filetypes[$type])) {
- unset($all_types[$key]);
- }
- }
- // check selected type for validity
- if ($curr_type and (!in_array($curr_type, $all_types) or !isset($filetypes[$curr_type]))) {
- $curr_type = false;
- } else {
- $spawfm->setCurrentType($curr_type);
- }
-
- // filter out directories not matching current type, reset $curr_dir if needed
- if ($curr_type) {
- $curr_dir_reset = false;
- foreach ($dirs as $key=>$val) {
- if (empty($val['params']['allowed_filetypes']) or
- (is_string($val['params']['allowed_filetypes']) and $val['params']['allowed_filetypes'] != 'any' and $val['params']['allowed_filetypes'] != $curr_type) or
- (is_array($val['params']['allowed_filetypes']) and !in_array($curr_type, $val['params']['allowed_filetypes']) and !in_array('any', $val['params']['allowed_filetypes'])))
- {
- unset($dirs[$key]);
- if ($val['dir'] == $curr_dir) {
- $curr_dir = false;
- $spawfm->unsetCurrentDirData();
- }
- } elseif (!$curr_dir or ($curr_dir and $curr_dir_reset and !empty($val['params']['default_dir']))) {
- $curr_dir_reset = true;
- $spawfm->setCurrentDirData($val);
- $curr_dir_pos = $key;
- }
- }
- }
-
- if (!sizeof($dirs)) {
- $error_msg = $lang->m('error_no_directory_available', 'spawfm');
- }
-
- // set first directory as selected if selected directory is not valid
- if ($spawfm->getCurrentDirData() === false and sizeof($dirs)) {
- $keys = array_keys($dirs);
- $curr_dir_pos = $keys[0];
- $curr_dir = $dirs[$curr_dir_pos]['dir'];
- $spawfm->setCurrentDirData($dirs[$curr_dir_pos]);
- }
-
- // process subdirectories if selected and allowed
- if ($spawfm->getCurrentDirSetting('recursive') and !empty($curr_dir_subdir)) {
- // filter subdir variable for validity
- $arr = explode('/', $curr_dir_subdir);
- $str = '';
- foreach ($arr as $val) {
- if (!empty($val) and $val != '..') {
- $str .= $val.'/';
- }
- }
- $curr_dir_subdir = $str;
-
- // add subdirectories to list if exist and parent dir matched
- if ($spawfm->getCurrentFsDir() and file_exists($spawfm->getCurrentFsDir().$curr_dir_subdir)) {
- $dirs_new = array();
- foreach ($dirs as $pos=>$dir) {
- $dirs_new[] = $dir;
- if ($pos == $curr_dir_pos and preg_match_all('|([^/]*)/|', $curr_dir_subdir, $subdirs)) {
- // insert all subdirectories
- $subdir_path = '';
- foreach ($subdirs[1] as $cnt=>$subdir) {
- $subdir_path .= $subdir.'/';
- $subdir_data = $dir;
- $subdir_data['dir'] = $subdir_data['dir'] . $subdir_path;
- $subdir_data['caption'] = str_repeat(' ', ($cnt+1)*2).$subdir;
- $subdir_data['value'] = $spawfm->getCurrentDir() . $config->getConfigValue('spawfm_path_separator') . $subdir_path;
- $dirs_new[] = $subdir_data;
- }
- }
- }
- $dirs = $dirs_new;
-
- // set dir vars to subdir
- $curr_dir_data = $spawfm->getCurrentDirData();
- $curr_dir_data['dir'] = $spawfm->getCurrentDir().$curr_dir_subdir;
- $curr_dir_data['fsdir'] = $spawfm->getCurrentFsDir().$curr_dir_subdir;
- $spawfm->setCurrentDirData($curr_dir_data);
- }
-
- }
-
- // handle file delete
- if ($del_file = SpawVars::getPostVar('delete_file') and !$spawfm->deleteFile($del_file)) {
- $error_msg = $spawfm->getError();
- }
-
- // handle file rename
- if ($ren_old_name = SpawVars::getPostVar('rename_from') and
- $ren_new_name = SpawVars::getPostVar('rename_to') and
- !$spawfm->renameFile($ren_old_name, $ren_new_name))
- {
- $error_msg = $spawfm->getError();
- }
-
- // handle new directory creation
- if ($dir_name = SpawVars::getPostVar('new_folder')) {
- if (!$spawfm->createDirectory($dir_name)) {
- $error_msg = $spawfm->getError();
- } else {
- $onload_select = $dir_name;
- }
- }
-
- // handle file upload
- if ($uplfile = SpawVars::getFilesVar('upload_file') and !empty($uplfile['size'])) {
- if (!$uplfile_name = $spawfm->uploadFile($uplfile)) {
- $error_msg = $spawfm->getError();
- } else {
- $onload_select = $uplfile_name;
- }
- }
-
- // load current directory contents:
- $files = $directories = array();
- $allowed_ext = array();
- if ($spawfm->getCurrentFsDir()) {
- // read files
- $files = $spawfm->getFilesList();
- if ($files === false) {
- $error_msg = $lang->m('error_reading_dir', 'spawfm');
- }
- // read directories if allowed
- if ($spawfm->getCurrentDirSetting('recursive')) {
- $directories = $spawfm->getDirectoriesList();
- }
- }
-
- ?>
- <style type="text/css">
- #file_list {
- height: 270px;
- }
-
- #file_details {
- text-align: left;
- border: 0px solid black;
- padding: 0px 5px 5px 5px;
- width: 180px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1em;
- color: #000000;
- overflow: hidden;
- height: 270px;
- }
-
-
- #details_header {
- display: none;
- }
- .details_header_col {
- display: inline;
- background-color: #D4D0C8;
- color: #000000;
- float: left;
- /*margin: 1px;
- /*padding: 2px;*/
- }
-
- #details_name { width: 33%; }
- #details_size { width: 14%; }
- #details_type { width: 26%; }
- #details_date { width: 26%; }
-
-
- .filedescr_title {
- font-weight: bold;
- font-size: 0.8em;
- }
- .filedescr_br {
- font-size: 0.8em;
- padding-bottom: 5px;
- }
- .filedescr_common {
- font-size: 0.8em;
- }
-
- .filedescr_download {
- font-size: 0.8em;
- font-weight: bold;
- padding-top: 5px;
- }
-
- .filedescr_img_preview {
- width: 175px;
- height: 150px;
- padding: 2px;
- border: 1px solid silver;
- background-color: #FFFFFF;
- margin-bottom: 5px;
- text-align:center;
- line-height:150px;
- }
- .img_preview {
- border: 1px;
- vertical-align: middle;
- padding: 0px;
- margin: 0px;
- }
-
- #error {
- color: #FF0000;
- font-size: 0.8em;
- font-weight: bold;
- }
-
- </style>
-
- <script type="text/javascript" src="<?php echo $config->getConfigValue('SPAW_DIR') ?>plugins/spawfm/dialogs/spawfm.js?<?php echo time(); ?>"></script>
- <script type="text/javascript">
- <?php
- // populate directories list
- $c = 0;
- foreach ($directories as $directory) {
- echo 'SpawFm.addDirectory(\''.SpawFm::escJsStr($directory['name'])."', '".
- $directory['size']."', '".
- date('Y-m-d H:i:s', $directory['date'])."', '".
- SpawFm::escJsStr($directory['descr'])."', '".
- $directory['icon']."', '".
- $directory['icon_big']."', '".
- $directory['thumb']."', '".
- SpawFm::escJsStr($directory['other']).
- "');\n";
- if (!empty($onload_select) and $directory['name'] == $onload_select) {
- $onload_select = $c;
- }
- $c++;
- }
-
- // populate files list
- $c = 0;
- foreach ($files as $file) {
- echo 'SpawFm.addFile(\''.SpawFm::escJsStr($file['name'])."', '".
- $file['size']."', '".
- date('Y-m-d H:i:s', $file['date'])."', '".
- SpawFm::escJsStr($file['fdescr'])."', '".
- $file['icon']."', '".
- $file['icon_big']."', '".
- $file['thumb']."', '".
- SpawFm::escJsStr($file['other']).
- "');\n";
- // check whick file was uploaded
- if (!empty($onload_select) and $file['name'] == $onload_select) {
- $onload_select = sizeof($directories) + $c;
- }
- $c++;
- }
- ?>
-
- SpawFm.setViewMode(1);
-
- SpawFm.txtFileSize = '<?php echo SpawFm::escJsStr($lang->m('size', 'file_details')); ?>';
- SpawFm.txtFileDate = '<?php echo SpawFm::escJsStr($lang->m('date', 'file_details')); ?>';
- SpawFm.txtConfirmDelete = '<?php echo SpawFm::escJsStr($lang->m('confirm_delete', 'spawfm')); ?>';
- SpawFm.txtDownload = '<?php echo SpawFm::escJsStr($lang->m('download_file', 'spawfm')); ?>';
- SpawFm.txtRename = '<?php echo SpawFm::escJsStr($lang->m('rename_text', 'spawfm')); ?>';
- SpawFm.txtCreateDirectory = '<?php echo SpawFm::escJsStr($lang->m('newdirectory_text', 'spawfm')); ?>';
- SpawFm.txtConfirmDeleteDir = '<?php echo SpawFm::escJsStr($lang->m('confirmdeletedir_text', 'spawfm')); ?>';
-
- SpawFm.filePath = '<?php echo addslashes($spawfm->getCurrentDir()); ?>';
- SpawFm.allowModify = <?php echo $spawfm->getCurrentDirSetting('allow_modify') ? 'true' : 'false'; ?>;
- SpawFm.allowModifySubdirectories = <?php echo $spawfm->getCurrentDirSetting('allow_modify_subdirectories') ? 'true' : 'false'; ?>;
-
- <?php
- // select uploaded file
- if (!empty($onload_select)) {
- ?>
- SpawFm.onloadSelectFile = <?php echo $onload_select; ?>;
- <?php
- }
- ?>
-
- </script>
- <form name="spawfm_form" method="post" enctype="multipart/form-data">
- <input type="hidden" name="delete_file" value="" />
- <input type="hidden" name="new_folder" value="" />
- <input type="hidden" name="rename_from" value="" />
- <input type="hidden" name="rename_to" value="" />
- <input type="hidden" name="subdir" value="<?php echo isset($curr_dir_pos) and $curr_dir_pos !== false ? $curr_dir_pos : ''; ?>" />
- <table border="0" cellpadding="2" cellspacing="0" width="100%">
- <tr>
- <td nowrap="nowrap" colspan="2" style="border-bottom: 1px solid #000000;">
- <table border="0" cellpadding="2" cellspacing="0" width="550">
- <tr>
- <td valign="middle" nowrap="nowrap" width="350">
- <select name="dir" style="width: 350px;" onchange="document.spawfm_form.submit()">
- <?php
- foreach ($dirs as $dir) {
- $st = ($dir['dir'] == $spawfm->getCurrentDir()) ? ' selected="selected"' : '';
- $val = isset($dir['value']) ? $dir['value'] : $dir['dir'];
- $val = SpawFm::escapeHtml($val);
- echo '<option value="'.$val.'"'.$st.'>';
- echo SpawFm::escapeHtml($dir['caption']);
- echo '</option>'."\n";
- }
- ?>
- </select>
- </td>
- <td valign="middle" nowrap="nowrap">
- <?php
- if (!empty($curr_dir_subdir)) {
- echo '<input type="image" onclick="SpawFm.goUpClick();" src="../plugins/spawfm/img/btn_up.gif" title="'.$lang->m('go_up', 'buttons').'" class="bt" style="width: 24px; height: 24px; margin: 1px;" />';
- } else {
- echo '<input type="image" src="../plugins/spawfm/img/btn_up_off.gif" title="'.$lang->m('go_up', 'buttons').'" class="bt" style="width: 24px; height: 24px; margin: 1px;" disabled="disabled" />';
- }
- if (!$spawfm->getCurrentDirSetting('recursive') or
- !$spawfm->getCurrentDirSetting('allow_create_subdirectories'))
- {
- echo '<input type="image" src="../plugins/spawfm/img/btn_new_folder_off.gif" title="'.$lang->m('create_directory', 'buttons').'" class="bt" style="width: 24px; height: 24px; margin: 1px;" disabled="disabled" />';
- } else {
- echo '<input type="image" onclick="SpawFm.createDirectoryClick();" src="../plugins/spawfm/img/btn_new_folder.gif" title="'.$lang->m('create_directory', 'buttons').'" class="bt" style="width: 24px; height: 24px; margin: 1px;" />';
- }
- ?>
- </td>
- <td valign="middle" nowrap="nowrap" align="right">
- <?php
- if (!$type_fixed) {
- ?>
-
- <select name="type" style="width: 150px;" onchange="document.spawfm_form.submit()">
- <option value="*"><?php echo $lang->m('any', 'filetypes'); ?></option>
- <?php
- foreach ($all_types as $type) {
- $st = ($curr_type == $type) ? ' selected="selected"' : '';
- echo '<option value="'.SpawFm::escapeHtml($type).'"'.$st.'>';
- $title = strlen($lang->m($type, 'filetypes')) ? $lang->m($type, 'filetypes') : $type;
- if (isset($filetypes[$type])) {
- $title .= str_replace('.', '', '('.implode(', ', $filetypes[$type]).')');
- }
- echo SpawFm::escapeHtml($title);
- echo '</option>'."\n";
- }
- ?>
- </select>
- <?php
- }
- ?>
- </td>
- <td valign="middle" align="right" nowrap="nowrap">
- <!--
-
- <a href="javascript:SpawFm.applyViewMode(1);"><img src="<?php echo $imgdir; ?>btn_view_list.gif" alt="<?php echo $lang->m('view_list', 'buttons'); ?>" title="<?php echo $lang->m('view_list', 'buttons'); ?>" style="border: 0px;" /></a>
- <a href="javascript:SpawFm.applyViewMode(2);"><img src="<?php echo $imgdir; ?>btn_view_details.gif" alt="<?php echo $lang->m('view_details', 'buttons'); ?>" title="<?php echo $lang->m('view_details', 'buttons'); ?>" style="border: 0px;" /></a>
- <a href="javascript:SpawFm.applyViewMode(3);"><img src="<?php echo $imgdir; ?>btn_view_thumbs.gif" alt="<?php echo $lang->m('view_thumbs', 'buttons'); ?>" title="<?php echo $lang->m('view_thumbs', 'buttons'); ?>" style="border: 0px;" /></a>
- -->
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td nowrap="nowrap" style="border-right: 1px solid #000000; border-bottom: 1px solid #000000;" width="90%">
- <div id="file_list">
- <div id="details_header">
- <div id="details_name" class="details_header_col"><?php echo $lang->m('name', 'file_details'); ?></div>
- <div id="details_size" class="details_header_col"><?php echo $lang->m('size', 'file_details'); ?></div>
- <div id="details_type" class="details_header_col"><?php echo $lang->m('type', 'file_details'); ?></div>
- <div id="details_date" class="details_header_col"><?php echo $lang->m('date', 'file_details'); ?></div>
- </div>
- <iframe src="../empty/empty.html?<?php echo microtime(); ?>" id="dir_cont" onload="SpawFm.initIframe();" name="dir_cont" scrolling="auto" width="100%" height="100%" frameborder="0"></iframe>
- </div>
- </td>
- <td width="180" nowrap="nowrap" valign="top" style="border-bottom: 1px solid #000000;">
- <div id="file_details"></div>
- </td>
- </tr>
- <tr>
- <td colspan="2" nowrap="nowrap" style="border-bottom: 1px solid #000000;">
- <input type="button" name="delete_button" value="<?php echo $lang->m('delete', 'buttons')?>" class="bt" disabled="disabled" onclick="SpawFm.deleteClick()" />
- <input type="button" name="rename_button" value="<?php echo $lang->m('rename', 'buttons')?>" class="bt" disabled="disabled" onclick="SpawFm.renameClick()" />
- <?php
- if (!is_writeable($spawfm->getCurrentFsDir()) or !$spawfm->getCurrentDirSetting('allow_upload'))
- $st = ' disabled="disabled"';
- else
- $st = '';
- ?>
-
- <input type="file" name="upload_file" class="input" />
- <input type="submit" name="upload_button" value="<?php echo $lang->m('upload', 'buttons')?>"<?php echo $st; ?> class="bt" />
- </td>
- </tr>
- <tr>
- <td align="left" valign="top" style="padding: 5px;">
- <div id="error"><?php echo $error_msg; ?></div>
- </td>
- <td align="right" valign="bottom" nowrap="nowrap" style="padding: 5px;">
- <input type="button" name="ok_button" value="<?php echo $lang->m('ok', 'buttons')?>" onClick="SpawFm.okClick()" class="bt" disabled="disabled" />
- <input type="button" name="cancel_button" value="<?php echo $lang->m('cancel', 'buttons')?>" onClick="SpawFm.cancelClick()" class="bt" />
- </td>
- </tr>
- </table>
- </form>