From 15011a496e816fad28a40b097416c34aa52322ea Mon Sep 17 00:00:00 2001 From: Miles Lott Date: Sat, 21 Feb 2004 13:56:18 +0000 Subject: [PATCH] Add detection of mime_type to display files inline or download as needed; If mime_type is text or not defined, at least output a filename for download; formatting; --- filemanager/inc/class.uifilemanager.inc.php | 2122 ++++++++++--------- 1 file changed, 1083 insertions(+), 1039 deletions(-) diff --git a/filemanager/inc/class.uifilemanager.inc.php b/filemanager/inc/class.uifilemanager.inc.php index 00df70ee8a..7ca3a4c0be 100755 --- a/filemanager/inc/class.uifilemanager.inc.php +++ b/filemanager/inc/class.uifilemanager.inc.php @@ -18,7 +18,6 @@ class uifilemanager { - var $public_functions = array( 'index' => True, 'help' => True, @@ -31,17 +30,16 @@ //keep var $bo; var $t; //template object - var $dispath; + var $dispath; var $cwd; var $lesspath; var $readable_groups; - var $files_array; + var $files_array; var $numoffiles; var $dispsep; var $target; - var $prefs;//array var $groups_applications; @@ -88,23 +86,24 @@ function uifilemanager() { - // error_reporting (8); + // error_reporting(8); + $GLOBALS['phpgw']->browser = CreateObject('phpgwapi.browser'); - $this->now = date ('Y-m-d'); + $this->now = date('Y-m-d'); $this->bo = CreateObject('filemanager.bofilemanager'); $this->t = $GLOBALS['phpgw']->template; // here local vars are created from the HTTP vars - @reset ($GLOBALS['HTTP_POST_VARS']); - while (list ($name,) = @each ($GLOBALS['HTTP_POST_VARS'])) + @reset($GLOBALS['HTTP_POST_VARS']); + while(list($name,) = @each($GLOBALS['HTTP_POST_VARS'])) { $this->$name = $GLOBALS['HTTP_POST_VARS'][$name]; } - @reset ($GLOBALS['HTTP_GET_VARS']); - while (list ($name,) = @each ($GLOBALS['HTTP_GET_VARS'])) + @reset($GLOBALS['HTTP_GET_VARS']); + while(list($name,) = @each($GLOBALS['HTTP_GET_VARS'])) { $$name = $GLOBALS['HTTP_GET_VARS'][$name]; } @@ -117,55 +116,55 @@ or 'var' when 'var' is set */ - 'op' => array ('op' => ''), - 'path' => array ('path' => ''), - 'file' => array ('file' => ''), - 'sortby' => array ('sortby' => ''), - // 'fileman' => array ('fileman' => ''), - 'messages' => array ('messages' => ''), - // 'help_name' => array ('help_name' => ''), - // 'renamefiles' => array ('renamefiles' => ''), - 'comment_files' => array ('comment_files' => ''), - 'show_upload_boxes' => array ('show_upload_boxes' => '') + 'op' => array('op' => ''), + 'path' => array('path' => ''), + 'file' => array('file' => ''), + 'sortby' => array('sortby' => ''), + // 'fileman' => array('fileman' => ''), + 'messages' => array('messages' => ''), + // 'help_name' => array('help_name' => ''), + // 'renamefiles' => array('renamefiles' => ''), + 'comment_files' => array('comment_files' => ''), + 'show_upload_boxes' => array('show_upload_boxes' => '') ); - reset ($to_decode); - while (list ($var, $conditions) = each ($to_decode)) + reset($to_decode); + while(list($var, $conditions) = each($to_decode)) { - while (list ($condvar, $condvalue) = each ($conditions)) + while(list($condvar, $condvalue) = each($conditions)) { - if (isset ($$condvar) && ($condvar == $var || $$condvar == $condvalue)) + if(isset($$condvar) && ($condvar == $var || $$condvar == $condvalue)) { - if (is_array ($$var)) + if(is_array($$var)) { - $temp = array (); - while (list ($varkey, $varvalue) = each ($$var)) + $temp = array(); + while(list($varkey, $varvalue) = each($$var)) { - if (is_int ($varkey)) + if(is_int($varkey)) { - $temp[$varkey] = stripslashes (base64_decode(urldecode(($varvalue)))); + $temp[$varkey] = stripslashes(base64_decode(urldecode(($varvalue)))); } else { - $temp[stripslashes (base64_decode(urldecode(($varkey))))] = $varvalue; + $temp[stripslashes(base64_decode(urldecode(($varkey))))] = $varvalue; } } $this->$var = $temp; } - elseif (isset ($$var)) + elseif(isset($$var)) { - $this->$var = stripslashes (base64_decode(urldecode ($$var))); + $this->$var = stripslashes(base64_decode(urldecode($$var))); } } } } - // get appl. and user prefs - $pref = CreateObject ('phpgwapi.preferences', $GLOBALS['userinfo']['username']); - $pref->read_repository (); - // $GLOBALS['phpgw']->hooks->single ('add_def_pref', $GLOBALS['appname']); - $pref->save_repository (True); - $pref_array = $pref->read_repository (); + // get appl. and user prefs + $pref = CreateObject('phpgwapi.preferences', $GLOBALS['userinfo']['username']); + $pref->read_repository(); + // $GLOBALS['phpgw']->hooks->single('add_def_pref', $GLOBALS['appname']); + $pref->save_repository(True); + $pref_array = $pref->read_repository(); $this->prefs = $pref_array[$GLOBALS['appname']]; //always show name @@ -173,7 +172,7 @@ $this->prefs[name] =1; - if ($this->prefs['viewinnewwin']) + if($this->prefs['viewinnewwin']) { $this->target = '_blank'; } @@ -181,7 +180,7 @@ function index() { - if ($noheader || $nofooter || ($this->download_x && (count ($this->fileman) > 0))) + if($noheader || $nofooter || ($this->download_x && (count($this->fileman) > 0))) { $noheader = True; $nofooter = True; @@ -205,7 +204,7 @@ } // var_dump($GLOBALS[HTTP_POST_VARS]); - //var_dump($this->delete_x); + //var_dump($this->delete_x); # Page to process users # Code is fairly hackish at the beginning, but it gets better @@ -215,7 +214,7 @@ # Some hacks to set and display directory paths correctly ### /* - if ($this->goto || $this->goto_x) + if($this->goto || $this->goto_x) { $this->path = $this->cdtodir; } @@ -226,71 +225,77 @@ $this->path = $this->cdtodir; } - if (!$this->path) + if(!$this->path) { - $this->path = $this->bo->vfs->pwd (); + $this->path = $this->bo->vfs->pwd(); - if (!$this->path || $this->bo->vfs->pwd (array ('full' => False)) == '') + if(!$this->path || $this->bo->vfs->pwd(array('full' => False)) == '') { $this->path = $GLOBALS['homedir']; } } - $this->bo->vfs->cd (array ('string' => False, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); - $this->bo->vfs->cd (array ('string' => $this->path, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); + $this->bo->vfs->cd(array('string' => False, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); + $this->bo->vfs->cd(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); - $pwd = $this->bo->vfs->pwd (); + $pwd = $this->bo->vfs->pwd(); - if (!$this->cwd = substr ($this->path, strlen ($GLOBALS['homedir']) + 1)) + if(!$this->cwd = substr($this->path, strlen($GLOBALS['homedir']) + 1)) { $this->cwd = '/'; } else { - $this->cwd = substr ($pwd, strrpos ($pwd, '/') + 1); + $this->cwd = substr($pwd, strrpos($pwd, '/') + 1); } $this->disppath = $this->path; /* This just prevents // in some cases */ - if ($this->path == '/') - $this->dispsep = ''; + if($this->path == '/') + { + $this->dispsep = ''; + } else - $this->dispsep = '/'; + { + $this->dispsep = '/'; + } - if (!($this->lesspath = substr ($this->path, 0, strrpos ($this->path, '/')))) - $this->lesspath = '/'; + if(!($this->lesspath = substr($this->path, 0, strrpos($this->path, '/')))) + { + $this->lesspath = '/'; + } # Get their readable groups to be used throughout the script $groups = array(); - $groups = $GLOBALS['phpgw']->accounts->get_list ('groups'); + $groups = $GLOBALS['phpgw']->accounts->get_list('groups'); $this->readable_groups = array(); - while (list ($num, $account) = each ($groups)) + while(list($num, $account) = each($groups)) { - if ($this->bo->vfs->acl_check (array ('owner_id' => $account['account_id'], 'operation' => PHPGW_ACL_READ))) + if($this->bo->vfs->acl_check(array('owner_id' => $account['account_id'], 'operation' => PHPGW_ACL_READ))) { $this->readable_groups[$account['account_lid']] = Array('account_id' => $account['account_id'], 'account_name' => $account['account_lid']); } } - $this->groups_applications = array (); + $this->groups_applications = array(); - while (list ($num, $group_array) = each ($this->readable_groups)) + while(list($num, $group_array) = each($this->readable_groups)) { - $group_id = $GLOBALS['phpgw']->accounts->name2id ($group_array['account_name']); + $group_id = $GLOBALS['phpgw']->accounts->name2id($group_array['account_name']); $applications = CreateObject('phpgwapi.applications', $group_id); - $this->groups_applications[$group_array['account_name']] = $applications->read_account_specific (); + $this->groups_applications[$group_array['account_name']] = $applications->read_account_specific(); } # We determine if they're in their home directory or a group's directory, # and set the VFS working_id appropriately - if ((preg_match ('+^'.$GLOBALS['fakebase'].'\/(.*)(\/|$)+U', $this->path, $matches)) && $matches[1] != $GLOBALS['userinfo']['account_lid']) + if((preg_match('+^'.$GLOBALS['fakebase'].'\/(.*)(\/|$)+U', $this->path, $matches)) && $matches[1] != $GLOBALS['userinfo']['account_lid']) { - $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id ($matches[1]); + $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id($matches[1]); } else { @@ -298,34 +303,34 @@ } - # FIXME # comment waht happens here - if ($this->path != $GLOBALS['homedir'] && $this->path != $GLOBALS['fakebase'] && $this->path != '/' && !$this->bo->vfs->acl_check (array ( 'string' => $this->path, 'relatives' => array (RELATIVE_NONE),'operation' => PHPGW_ACL_READ ))) + # FIXME # comment waht happens here + if($this->path != $GLOBALS['homedir'] && $this->path != $GLOBALS['fakebase'] && $this->path != '/' && !$this->bo->vfs->acl_check(array('string' => $this->path, 'relatives' => array(RELATIVE_NONE),'operation' => PHPGW_ACL_READ))) { - $this->messages.= $GLOBALS['phpgw']->common->error_list (array (lang('You do not have access to %1', $this->path))); - $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir'], lang('Go to your home directory')); + $this->messages.= $GLOBALS['phpgw']->common->error_list(array(lang('You do not have access to %1', $this->path))); + $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir'], lang('Go to your home directory')); - $GLOBALS['phpgw']->common->phpgw_footer (); - $GLOBALS['phpgw']->common->phpgw_exit (); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); } $GLOBALS['userinfo']['working_id'] = $this->bo->vfs->working_id; - $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLOBALS['userinfo']['working_id']); + $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name($GLOBALS['userinfo']['working_id']); # If their home directory doesn't exist, we try to create it # Same for group directories - if (($this->path == $GLOBALS['homedir']) && !$this->bo->vfs->file_exists ($pim_tmp_arr)) + if(($this->path == $GLOBALS['homedir']) && !$this->bo->vfs->file_exists($pim_tmp_arr)) { $this->bo->vfs->override_acl = 1; - if (!$this->bo->vfs->mkdir (array ( + if(!$this->bo->vfs->mkdir(array( 'string' => $GLOBALS['homedir'], - 'relatives' => array (RELATIVE_NONE) + 'relatives' => array(RELATIVE_NONE) ))) { - $p = $this->bo->vfs->path_parts ($pim_tmp_arr); + $p = $this->bo->vfs->path_parts($pim_tmp_arr); - $this->messages= $GLOBALS['phpgw']->common->error_list (array ( - lang('Could not create directory %1', + $this->messages= $GLOBALS['phpgw']->common->error_list(array( + lang('Could not create directory %1', $GLOBALS['homedir'] . ' (' . $p->real_full_path . ')' ))); } @@ -334,49 +339,51 @@ } # Verify path is real - if ($this->path != $GLOBALS['homedir'] && $this->path != '/' && $this->path != $GLOBALS['fakebase']) + if($this->path != $GLOBALS['homedir'] && $this->path != '/' && $this->path != $GLOBALS['fakebase']) { - if (!$this->bo->vfs->file_exists (array ( + if(!$this->bo->vfs->file_exists(array( 'string' => $this->path, - 'relatives' => array (RELATIVE_NONE) + 'relatives' => array(RELATIVE_NONE) ))) { - $this->messages = $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 does not exist', $this->path))); - $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir'], lang('Go to your home directory')); + $this->messages = $GLOBALS['phpgw']->common->error_list(array(lang('Directory %1 does not exist', $this->path))); + $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir'], lang('Go to your home directory')); - $GLOBALS['phpgw']->common->phpgw_footer (); - $GLOBALS['phpgw']->common->phpgw_exit (); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); } } /* Update if they request it, or one out of 20 page loads */ - srand ((double) microtime() * 1000000); - if ($update || rand (0, 19) == 4) + srand((double) microtime() * 1000000); + if($update || rand(0, 19) == 4) { - $this->bo->vfs->update_real (array ( - 'string' => $this->path, - 'relatives' => array (RELATIVE_NONE) + $this->bo->vfs->update_real(array( + 'string' => $this->path, + 'relatives' => array(RELATIVE_NONE) )); } # Check available permissions for $this->path, so we can disable unusable operations in user interface - if ($this->bo->vfs->acl_check (array( - 'string' => $this->path, - 'relatives' => array (RELATIVE_NONE), + if($this->bo->vfs->acl_check(array( + 'string' => $this->path, + 'relatives' => array(RELATIVE_NONE), 'operation' => PHPGW_ACL_ADD ))) { $this->can_add = True; } - # Default is to sort by name - if (!$this->sortby) + if(!$this->sortby) { $this->sortby = 'name'; } - if($this->debug) $this->debug_filemanager(); + if($this->debug) + { + $this->debug_filemanager(); + } # main action switch // FIXME this will become a switch @@ -388,44 +395,44 @@ { $this->createdir(); } - elseif ($this->uploadprocess) + elseif($this->uploadprocess) { $this->fileUpload(); } - elseif ($this->upload_x || $this->show_upload_boxes) + elseif($this->upload_x || $this->show_upload_boxes) { $this->showUploadboxes(); } - elseif ($this->copy_to_x) + elseif($this->copy_to_x) { $this->copyTo(); } - elseif ($this->move_to_x) + elseif($this->move_to_x) { $this->moveTo(); } - elseif ($this->download_x) + elseif($this->download_x) { $this->download(); } - elseif ($this->renamefiles) + elseif($this->renamefiles) { $this->rename(); } - elseif ($this->comment_files) + elseif($this->comment_files) { $this->editComment(); } - elseif ($this->edit_cancel_x) + elseif($this->edit_cancel_x) { $this->readFilesInfo(); $this->fileListing(); } - elseif ($this->edit_x || $this->edit_preview_x || $this->edit_save_x || $this->edit_save_done_x) + elseif($this->edit_x || $this->edit_preview_x || $this->edit_save_x || $this->edit_save_done_x) { $this->edit(); } - elseif ($this->delete_x) + elseif($this->delete_x) { $this->delete(); } @@ -434,7 +441,6 @@ $this->readFilesInfo(); $this->fileListing(); } - } function fileListing() @@ -445,12 +451,12 @@ $this->t->set_block('filemanager_list_t','row','row'); $this->t->set_block('filemanager_list_t','filemanager_footer','filemanager_footer'); - $vars['form_action']=$this->encode_href ('/index.php', 'menuaction=filemanager.uifilemanager.index','path='.$this->path); - if ($this->numoffiles || $this->cwd) + $vars['form_action']=$this->encode_href('/index.php', 'menuaction=filemanager.uifilemanager.index','path='.$this->path); + if($this->numoffiles || $this->cwd) { - while (list ($num, $name) = each ($this->prefs)) + while(list($num, $name) = each($this->prefs)) { - if ($name) + if($name) { $columns++; } @@ -465,20 +471,19 @@ $this->t->set_var($vars); $this->t->pparse('out','filemanager_header'); - ### # Start File Table Column Headers # Reads values from $file_attributes array and preferences ### $this->t->set_var('actions',lang('select')); - reset ($this->bo->file_attributes); + reset($this->bo->file_attributes); if($this->numoffiles>0) { - while (list ($internal, $displayed) = each ($this->bo->file_attributes)) + while(list($internal, $displayed) = each($this->bo->file_attributes)) { - if ($this->prefs[$internal]) + if($this->prefs[$internal]) { $col_data=''.$displayed.''; $this->t->set_var('col_data',$col_data); @@ -497,7 +502,7 @@ $vars[lang_no_files]=$lang_nofiles; - if ($this->prefs['dotdot'] && $this->prefs['name'] && $this->path != '/') + if($this->prefs['dotdot'] && $this->prefs['name'] && $this->path != '/') { $this->t->set_var('actions',''); @@ -509,64 +514,63 @@ $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column'); - if ($this->prefs['mime_type']) + if($this->prefs['mime_type']) { $col_data=lang('Directory'); $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } - $this->t->set_var('row_tr_color',$tr_color); $this->t->parse('rows','row'); $this->t->pparse('out','row'); } # List all of the files, with their attributes - @reset ($this->files_array); - for ($i = 0; $i != $this->numoffiles; $i++) + @reset($this->files_array); + for($i = 0; $i != $this->numoffiles; $i++) { $files = $this->files_array[$i]; - if ($this->rename_x || $this->edit_comments_x) + if($this->rename_x || $this->edit_comments_x) { - unset ($this_selected); - unset ($renamethis); - unset ($edit_this_comment); + unset($this_selected); + unset($renamethis); + unset($edit_this_comment); - for ($j = 0; $j != $this->numoffiles; $j++) + for($j = 0; $j != $this->numoffiles; $j++) { - if ($this->fileman[$j] == $files['name']) + if($this->fileman[$j] == $files['name']) { $this_selected = 1; break; } } - if ($this->rename_x && $this_selected) + if($this->rename_x && $this_selected) { $renamethis = 1; } - elseif ($this->edit_comments_x && $this_selected) + elseif($this->edit_comments_x && $this_selected) { $edit_this_comment = 1; } } - if (!$this->prefs['dotfiles'] && ereg ("^\.", $files['name'])) + if(!$this->prefs['dotfiles'] && ereg("^\.", $files['name'])) { continue; } # Checkboxes - if (!$this->rename_x && !$this->edit_comments_x && $this->path != $GLOBALS['fakebase'] && $this->path != '/') + if(!$this->rename_x && !$this->edit_comments_x && $this->path != $GLOBALS['fakebase'] && $this->path != '/') { $cbox=''; $this->t->set_var('actions',$cbox); } - elseif ($renamethis) + elseif($renamethis) { - $cbox=$this->html_form_input ('hidden', 'fileman[' . base64_encode ($files['name']) . ']', $files['name'], NULL, NULL, 'checked'); + $cbox=$this->html_form_input('hidden', 'fileman[' . base64_encode($files['name']) . ']', $files['name'], NULL, NULL, 'checked'); $this->t->set_var('actions',$cbox); } else @@ -575,16 +579,16 @@ } # File name and icon - if ($renamethis) + if($renamethis) { $col_data=$this->mime_icon($files['mime_type']); $col_data.=''; } else { - if ($files['mime_type'] == 'Directory') + if($files['mime_type'] == 'Directory') { - $link=$this->encode_href ('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path.$this->dispsep.$files['name']); + $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path.$this->dispsep.$files['name']); $icon=$this->mime_icon($files['mime_type']); @@ -594,15 +598,15 @@ else { - if ($this->prefs['viewonserver'] && isset ($GLOBALS['filesdir']) && !$files['link_directory']) + if($this->prefs['viewonserver'] && isset($GLOBALS['filesdir']) && !$files['link_directory']) { #FIXME $clickview = $GLOBALS['filesdir'].$pwd.'/'.$files['name']; - if ($phpwh_debug) + if($phpwh_debug) { echo 'Setting clickview = '.$clickview.'
'."\n"; - $this->html_link ($clickview,'', '',$files['name'], 0, 1, 0, ''); + $this->html_link($clickview,'', '',$files['name'], 0, 1, 0, ''); } } else @@ -619,7 +623,7 @@ $this->t->parse('columns','column'); # MIME type - if ($this->prefs['mime_type']) + if($this->prefs['mime_type']) { $col_data=$files['mime_type']; $this->t->set_var('col_data',$col_data); @@ -627,23 +631,23 @@ } # File size - if ($this->prefs['size']) + if($this->prefs['size']) { $tmp_arr=array( - 'string' => $files['directory'] . '/' . $files['name'], - 'relatives' => array (RELATIVE_NONE) + 'string' => $files['directory'] . '/' . $files['name'], + 'relatives' => array(RELATIVE_NONE) ); $size = $this->bo->vfs->get_size($tmp_arr); - $col_data=$this->bo->borkb ($size); + $col_data=$this->bo->borkb($size); $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Date created - if ($this->prefs['created']) + if($this->prefs['created']) { $col_data=$files['created']; $this->t->set_var('col_data',$col_data); @@ -651,29 +655,35 @@ } # Date modified - if ($this->prefs['modified']) + if($this->prefs['modified']) { - if ($files['modified'] != '0000-00-00') $col_data=$files['modified']; - else $col_data=''; + if($files['modified'] != '0000-00-00') + { + $col_data=$files['modified']; + } + else + { + $col_data=''; + } $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Owner name - if ($this->prefs['owner']) + if($this->prefs['owner']) { - $this->t->set_var('col_data',$GLOBALS['phpgw']->accounts->id2name ($files['owner_id'])); + $this->t->set_var('col_data',$GLOBALS['phpgw']->accounts->id2name($files['owner_id'])); $this->t->parse('columns','column',True); } # Creator name - if ($this->prefs['createdby_id']) + if($this->prefs['createdby_id']) { - $this->html_table_col_begin (); - if ($files['createdby_id']) + $this->html_table_col_begin(); + if($files['createdby_id']) { - $col_data=$GLOBALS['phpgw']->accounts->id2name ($files['createdby_id']); + $col_data=$GLOBALS['phpgw']->accounts->id2name($files['createdby_id']); } else $col_data=''; @@ -682,11 +692,11 @@ } # Modified by name - if ($this->prefs['modifiedby_id']) + if($this->prefs['modifiedby_id']) { - if ($files['modifiedby_id']) + if($files['modifiedby_id']) { - $col_data=$GLOBALS['phpgw']->accounts->id2name ($files['modifiedby_id']); + $col_data=$GLOBALS['phpgw']->accounts->id2name($files['modifiedby_id']); } else $col_data=''; $this->t->set_var('col_data',$col_data); @@ -694,7 +704,7 @@ } # Application - if ($this->prefs['app']) + if($this->prefs['app']) { $col_data=$files['app']; $this->t->set_var('col_data',$col_data); @@ -702,11 +712,11 @@ } # Comment - if ($this->prefs['comment']) + if($this->prefs['comment']) { - if ($edit_this_comment) + if($edit_this_comment) { - $col_data='' ; + $col_data=''; } else { @@ -717,7 +727,7 @@ } # Version - if ($this->prefs['version']) + if($this->prefs['version']) { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.history','file='.$files['name'].'&path='.$this->path); $col_data=''.$files['version'].''; @@ -725,9 +735,7 @@ $this->t->parse('columns','column',True); } - - - if ($files['mime_type'] == 'Directory') + if($files['mime_type'] == 'Directory') { $usedspace += $fileinfo[0]; } @@ -742,7 +750,7 @@ } // when renaming or changing comments render extra sumbmit button - if ($this->rename_x || $this->edit_comments_x) + if($this->rename_x || $this->edit_comments_x) { $col_data='
'; $this->t->set_var('col_data',$col_data); @@ -751,43 +759,36 @@ $this->t->parse('rows','row'); $this->t->pparse('out','row'); } - - } - - // The file and directory information $vars[lang_files_in_this_dir]=lang('Files in this directory'); $vars[files_in_this_dir]=$this->numoffiles; $vars[lang_used_space]=lang('Used space'); - $vars[used_space]=$this->bo->borkb ($usedspace, NULL, 1); + $vars[used_space]=$this->bo->borkb($usedspace, NULL, 1); - if ($this->path == $GLOBALS['homedir'] || $this->path == $GLOBALS['fakebase']) + if($this->path == $GLOBALS['homedir'] || $this->path == $GLOBALS['fakebase']) { $vars[lang_unused_space]=lang('Unused space'); - $vars[unused_space]=$this->bo->borkb ($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1); + $vars[unused_space]=$this->bo->borkb($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1); - $tmp_arr=array ( + $tmp_arr=array( 'string' => $this->path, - 'relatives' => array (RELATIVE_NONE) + 'relatives' => array(RELATIVE_NONE) ); - $ls_array = $this->bo->vfs->ls ($tmp_arr); - + $ls_array = $this->bo->vfs->ls($tmp_arr); $vars[lang_total_files]=lang('Total Files'); - $vars[total_files]= count ($ls_array); - + $vars[total_files]= count($ls_array); } $this->t->set_var($vars); $this->t->pparse('out','filemanager_footer'); - $GLOBALS['phpgw']->common->phpgw_footer (); - $GLOBALS['phpgw']->common->phpgw_exit (); - + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); } function readFilesInfo() @@ -798,38 +799,46 @@ # $fakebase is a special directory. In that directory, we list the user's # home directory and the directories for the groups they're in $this->numoffiles = 0; - if ($this->path == $GLOBALS['fakebase']) + if($this->path == $GLOBALS['fakebase']) { - if (!$this->bo->vfs->file_exists (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE)))) + if(!$this->bo->vfs->file_exists(array('string' => $GLOBALS['homedir'], 'relatives' => array(RELATIVE_NONE)))) { - $this->bo->vfs->mkdir (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE))); + $this->bo->vfs->mkdir(array('string' => $GLOBALS['homedir'], 'relatives' => array(RELATIVE_NONE))); } - $ls_array = $this->bo->vfs->ls (array ( 'string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => True ) ); + $ls_array = $this->bo->vfs->ls(array( + 'string' => $GLOBALS['homedir'], + 'relatives' => array(RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + )); $this->files_array[] = $ls_array[0]; $this->numoffiles++; - reset ($this->readable_groups); - while (list ($num, $group_array) = each ($this->readable_groups)) + reset($this->readable_groups); + while(list($num, $group_array) = each($this->readable_groups)) { # If the group doesn't have access to this app, we don't show it - if (!$this->groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + if(!$this->groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) { continue; } - if (!$this->bo->vfs->file_exists (array ('string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],'relatives' => array (RELATIVE_NONE) )) ) + if(!$this->bo->vfs->file_exists(array('string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],'relatives' => array(RELATIVE_NONE)))) { $this->bo->vfs->override_acl = 1; - $this->bo->vfs->mkdir (array ( 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], 'relatives' => array (RELATIVE_NONE) ) ); + $this->bo->vfs->mkdir(array( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array(RELATIVE_NONE) + )); $this->bo->vfs->override_acl = 0; - $this->bo->vfs->set_attributes (array ( 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], 'relatives' => array (RELATIVE_NONE), 'attributes' => array ( 'owner_id' => $group_array['account_id'], 'createdby_id' => $group_array['account_id'] ) ) ); + $this->bo->vfs->set_attributes(array('string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],'relatives' => array(RELATIVE_NONE),'attributes' => array('owner_id' => $group_array['account_id'],'createdby_id' => $group_array['account_id']))); } - $ls_array = $this->bo->vfs->ls (array ( 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], 'relatives' => array (RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => True ) ); + $ls_array = $this->bo->vfs->ls(array('string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],'relatives' => array(RELATIVE_NONE),'checksubdirs' => False,'nofiles' => True)); $this->files_array[] = $ls_array[0]; @@ -838,30 +847,37 @@ } else { - $ls_array = $this->bo->vfs->ls (array ( 'string' => $this->path, 'relatives' => array (RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => False, 'orderby' => $this->sortby ) ); + $ls_array = $this->bo->vfs->ls(array( + 'string' => $this->path, + 'relatives' => array(RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => False, + 'orderby' => $this->sortby + )); - if ($phpwh_debug) + if($phpwh_debug) { echo '# of files found in "'.$this->path.'" : '.count($ls_array).'
'."\n"; } - while (list ($num, $file_array) = each ($ls_array)) + while(list($num, $file_array) = each($ls_array)) { $this->numoffiles++; $this->files_array[] = $file_array; - if ($phpwh_debug) + if($phpwh_debug) { echo 'Filename: '.$file_array['name'].'
'."\n"; } } } - if (!is_array ($this->files_array)) + if(!is_array($this->files_array)) { - $this->files_array = array (); + $this->files_array = array(); } // end file count } + function toolbar($type) { switch($type) @@ -869,7 +885,7 @@ case 'location': $toolbar='
- +
'; $toolbar.=''; @@ -877,14 +893,14 @@ '; // go up icon when we're not at the top - if ($this->path != '/') - { + if($this->path != '/') + { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->lesspath); $toolbar.=$this->buttonImage($link,'up',lang('go up')); } // go home icon when we're not home already - if ($this->path != $GLOBALS['homedir']) + if($this->path != $GLOBALS['homedir']) { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir']); $toolbar.=$this->buttonImage($link,'home',lang('go home')); @@ -896,7 +912,7 @@ $toolbar.=''; @@ -920,46 +936,44 @@ break; case 'list_nav': $toolbar=' -
spacerspacer'.lang('Location').': '; //$toolbar.=' '; - $current_option=''; + $current_option=''; // selectbox for change/move/and copy to $dirs_options=$this->all_other_directories_options(); $toolbar.=' @@ -904,7 +920,7 @@ '; $toolbar.=$this->inputImage('goto','goto',lang('Quick jump to')); // upload button - if ($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) + if($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) { $toolbar.='spacer
+
'; // selectbox for change/move/and copy to // submit buttons for - if ($this->path != '/' && $this->path != $GLOBALS['fakebase']) + if($this->path != '/' && $this->path != $GLOBALS['fakebase']) { $toolbar.=''; $toolbar.=' '; - if (!$this->rename_x && !$this->edit_comments_x) + if(!$this->rename_x && !$this->edit_comments_x) { // edit text file button $toolbar.=$this->inputImage('edit','edit',lang('edit')); } - if (!$this->edit_comments_x) + if(!$this->edit_comments_x) { $toolbar.=$this->inputImage('rename','rename',lang('Rename')); } - if (!$this->rename_x && !$this->edit_comments_x) + if(!$this->rename_x && !$this->edit_comments_x) { $toolbar.=$this->inputImage('delete','delete',lang('Delete')); } - if (!$this->rename_x) + if(!$this->rename_x) { $toolbar.=$this->inputImage('edit_comments','edit_comments',lang('Edit comments')); } $toolbar.=''; } - // $toolbar.='
spacerspacerspacer
'; - if (!$this->rename_x && !$this->edit_comments_x) + // $toolbar.=''; + if(!$this->rename_x && !$this->edit_comments_x) { - - // copy and move buttons - if ($this->path != '/' && $this->path != $GLOBALS['fakebase']) + if($this->path != '/' && $this->path != $GLOBALS['fakebase']) { $toolbar3.='spacer'; $toolbar3.='spacer'; @@ -975,7 +989,7 @@ } // create dir and file button - if ($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) + if($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) { $toolbar3.='spacer'; $toolbar3.='spacer'; @@ -989,7 +1003,7 @@ { $toolbar.=$toolbar3; /* $toolbar.=' - +
'.$toolbar3;*/ } } @@ -997,927 +1011,957 @@ break; default:$x=''; - } - - - if($toolbar) - { - return $toolbar; - } } - - // move to bo - # Handle File Uploads - function fileUpload() + if($toolbar) { - if ($this->path != '/' && $this->path != $GLOBALS['fakebase']) - { - for ($i = 0; $i != $this->show_upload_boxes; $i++) - { - if ($badchar = $this->bo->bad_chars ($_FILES['upload_file']['name'][$i], True, True)) - { - $this->messages.= $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"', $badchar), 1))); - - continue; - } - - # Check to see if the file exists in the database, and get its info at the same time - $ls_array = $this->bo->vfs->ls (array ( - 'string'=> $this->path . '/' . $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, - 'nofiles' => True - )); - - $fileinfo = $ls_array[0]; - - if ($fileinfo['name']) - { - if ($fileinfo['mime_type'] == 'Directory') - { - $this->messages.= $GLOBALS['phpgw']->common->error_list (array (lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); - continue; - } - } - - if ($_FILES['upload_file']['size'][$i] > 0) - { - if ($fileinfo['name'] && $fileinfo['deleteable'] != 'N') - { - $tmp_arr=array( - 'string'=> $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes' => array ( - 'owner_id' => $GLOBALS['userinfo']['username'], - 'modifiedby_id' => $GLOBALS['userinfo']['username'], - 'modified' => $this->now, - 'size' => $_FILES['upload_file']['size'][$i], - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'deleteable' => 'Y', - 'comment' => stripslashes ($upload_comment[$i]) - ) - ); - $this->bo->vfs->set_attributes($tmp_arr); - - $tmp_arr=array ( - 'from' => $_FILES['upload_file']['tmp_name'][$i], - 'to' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) - ); - $this->bo->vfs->cp($tmp_arr); - - $this->messages.=lang('Replaced %1', $this->disppath.'/'.$_FILES['upload_file']['name'][$i]); - } - else - { - - $this->bo->vfs->cp (array ( - 'from'=> $_FILES['upload_file']['tmp_name'][$i], - 'to'=> $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) - )); - - $this->bo->vfs->set_attributes (array ( - 'string'=> $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes'=> array ( - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'comment' => stripslashes ($upload_comment[$i]) - ) - )); - - $this->messages.=lang('Created %1,%2', $this->disppath.'/'.$_FILES['upload_file']['name'][$i], $_FILES['upload_file']['size'][$i]); - } - } - elseif ($_FILES['upload_file']['name'][$i]) - { - $this->bo->vfs->touch (array ( - 'string'=> $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL) - )); - - $this->bo->vfs->set_attributes (array ( - 'string'=> $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes'=> array ( - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'comment' => $upload_comment[$i] - ) - )); - - $this->messages.=lang('Created %1,%2', $this->disppath.'/'.$_FILES['upload_file']['name'][$i], $file_size[$i]); - } - } - - $this->readFilesInfo(); - $this->filelisting(); - } - + return $toolbar; } + } - # Handle Editing comments - function editComment() + // move to bo + # Handle File Uploads + function fileUpload() + { + if($this->path != '/' && $this->path != $GLOBALS['fakebase']) { - while (list ($file) = each ($this->comment_files)) + for($i = 0; $i != $this->show_upload_boxes; $i++) { - if ($badchar = $this->bo->bad_chars ($this->comment_files[$file], False, True)) + if($badchar = $this->bo->bad_chars($_FILES['upload_file']['name'][$i], True, True)) { - $this->messages=$GLOBALS['phpgw']->common->error_list (array ($file . $this->bo->html_encode (': ' . lang('Comments cannot contain "%1"', $badchar), 1))); + $this->messages.= $GLOBALS['phpgw']->common->error_list(array($this->bo->html_encode(lang('File names cannot contain "%1"', $badchar), 1))); + continue; } - $this->bo->vfs->set_attributes (array ( 'string' => $file, 'relatives' => array (RELATIVE_ALL), 'attributes' => array ( 'comment' => stripslashes ($this->comment_files[$file]) ) ) ); - - $this->messages=lang('Updated comment for %1', $this->path.'/'.$file); - } - - $this->readFilesInfo(); - $this->filelisting(); - } - - # Handle Renaming Files and Directories - function rename() - { - while (list ($from, $to) = each ($this->renamefiles)) - { - if ($badchar = $this->bo->bad_chars ($to, True, True)) - { - $this->messages=$GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"', $badchar), 1))); - continue; - } - - if (ereg ("/", $to) || ereg ("\\\\", $to)) - { - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang("File names cannot contain \\ or /"))); - } - elseif (!$this->bo->vfs->mv (array ( 'from' => $from, 'to' => $to )) ) - { - $this->messages= $GLOBALS['phpgw']->common->error_list (array (lang('Could not rename %1 to %2', $this->disppath.'/'.$from, $this->disppath.'/'.$to))); - } - else - { - $this->messages=lang('Renamed %1 to %2', $this->disppath.'/'.$from, $this->disppath.'/'.$to); - } - } - $this->readFilesInfo(); - $this->filelisting(); - } - - # Handle Moving Files and Directories - function moveTo() - { - while (list ($num, $file) = each ($this->fileman)) - { - if ($this->bo->vfs->mv (array ( - 'from' => $file, - 'to' => $this->todir . '/' . $file, - 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) - ))) - { - $moved++; - $this->messages=lang('Moved %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file); - } - else - { - $this->messages = $GLOBALS['phpgw']->common->error_list (array (lang('Could not move %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file))); - } - } - - if ($moved) - { - $x=0; - } - - $this->readFilesInfo(); - $this->filelisting(); - } - - // Handle Copying of Files and Directories - function copyTo() - { - while (list ($num, $file) = each ($this->fileman)) - { - if ($this->bo->vfs->cp (array ( 'from' => $file, 'to' => $this->todir . '/' . $file, 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) )) ) - { - $copied++; - $this->message .= lang('Copied %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file); - } - else - { - $this->message .= $GLOBALS['phpgw']->common->error_list (array (lang('Could not copy %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file))); - } - } - - if ($copied) - { - $x=0; - } - - $this->readFilesInfo(); - $this->filelisting(); - - } - - function createdir() - { - if ($this->newdir_x && $this->newfile_or_dir) - { - if ($this->bo->badchar = $this->bo->bad_chars ($this->newfile_or_dir, True, True)) - { - $this->messages= $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('Directory names cannot contain "%1"', $badchar), 1))); - } - - if ($$this->newfile_or_dir[strlen($this->newfile_or_dir)-1] == ' ' || $this->newfile_or_dir[0] == ' ') - { - $this->messages= $GLOBALS['phpgw']->common->error_list (array (lang('Cannot create directory because it begins or ends in a space'))); - } - - $ls_array = $this->bo->vfs->ls (array ( - 'string' => $this->path . '/' . $this->newfile_or_dir, - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, + # Check to see if the file exists in the database, and get its info at the same time + $ls_array = $this->bo->vfs->ls(array( + 'string'=> $this->path . '/' . $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_NONE), + 'checksubdirs' => False, 'nofiles' => True )); $fileinfo = $ls_array[0]; - if ($fileinfo['name']) + if($fileinfo['name']) { - if ($fileinfo['mime_type'] != 'Directory') + if($fileinfo['mime_type'] == 'Directory') { - $this->messages= $GLOBALS['phpgw']->common->error_list (array ( - lang('%1 already exists as a file', - $fileinfo['name']) + $this->messages.= $GLOBALS['phpgw']->common->error_list(array(lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); + continue; + } + } + + if($_FILES['upload_file']['size'][$i] > 0) + { + if($fileinfo['name'] && $fileinfo['deleteable'] != 'N') + { + $tmp_arr=array( + 'string'=> $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_ALL), + 'attributes' => array( + 'owner_id' => $GLOBALS['userinfo']['username'], + 'modifiedby_id' => $GLOBALS['userinfo']['username'], + 'modified' => $this->now, + 'size' => $_FILES['upload_file']['size'][$i], + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'deleteable' => 'Y', + 'comment' => stripslashes($upload_comment[$i]) + ) + ); + $this->bo->vfs->set_attributes($tmp_arr); + + $tmp_arr=array( + 'from' => $_FILES['upload_file']['tmp_name'][$i], + 'to' => $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) + ); + $this->bo->vfs->cp($tmp_arr); + + $this->messages.=lang('Replaced %1', $this->disppath.'/'.$_FILES['upload_file']['name'][$i]); + } + else + { + + $this->bo->vfs->cp(array( + 'from'=> $_FILES['upload_file']['tmp_name'][$i], + 'to'=> $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) )); - } - else - { - $this->messages= $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 already exists', $fileinfo['name']))); + + $this->bo->vfs->set_attributes(array( + 'string'=> $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_ALL), + 'attributes'=> array( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => stripslashes($upload_comment[$i]) + ) + )); + + $this->messages.=lang('Created %1,%2', $this->disppath.'/'.$_FILES['upload_file']['name'][$i], $_FILES['upload_file']['size'][$i]); } } - else + elseif($_FILES['upload_file']['name'][$i]) { - if ($this->bo->vfs->mkdir (array ('string' => $this->newfile_or_dir))) - { - $this->messages=lang('Created directory %1', $this->disppath.'/'.$this->newfile_or_dir); - } - else - { - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('Could not create %1', $this->disppath.'/'.$this->newfile_or_dir))); - } + $this->bo->vfs->touch(array( + 'string'=> $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_ALL) + )); + + $this->bo->vfs->set_attributes(array( + 'string'=> $_FILES['upload_file']['name'][$i], + 'relatives' => array(RELATIVE_ALL), + 'attributes'=> array( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => $upload_comment[$i] + ) + )); + + $this->messages.=lang('Created %1,%2', $this->disppath.'/'.$_FILES['upload_file']['name'][$i], $file_size[$i]); } - - $this->readFilesInfo(); - $this->filelisting(); } - } - - function delete() - { - if( is_array($this->fileman) && count($this->fileman) >= 1) - { - foreach($this->fileman as $filename) - { - if ($this->bo->vfs->delete (array ('string' => $filename))) - { - $this->messages .= lang('Deleted %1', $this->disppath.'/'.$filename).'
'; - } - else - { - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('Could not delete %1', $this->disppath.'/'.$filename))); - } - } - } - else - { - // make this a javascript func for quicker respons - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('Please select a file to delete.'))); - } $this->readFilesInfo(); $this->filelisting(); } + } - - function debug_filemanager() + # Handle Editing comments + function editComment() + { + while(list($file) = each($this->comment_files)) { - error_reporting (8); - - echo "Filemanager debug:
- path: {$this->path}
- disppath: {$this->disppath}
- cwd: {$this->cwd}
- lesspath: {$this->lesspath} -

- eGroupware debug:
- real getabsolutepath: " . $this->bo->vfs->getabsolutepath (array ('target' => False, 'mask' => False, 'fake' => False)) . "
- fake getabsolutepath: " . $this->bo->vfs->getabsolutepath (array ('target' => False)) . "
- appsession: " . $GLOBALS['phpgw']->session->appsession ('vfs','') . "
- pwd: " . $this->bo->vfs->pwd () . "
"; - - echo '

'; - var_dump($this); - - - } - - function showUploadboxes() - { - $this->t->set_file(array('upload' => 'upload.tpl')); - $this->t->set_block('upload','upload_header','upload_header'); - $this->t->set_block('upload','row','row'); - $this->t->set_block('upload','upload_footer','upload_footer'); - - # Decide how many upload boxes to show - if (!$this->show_upload_boxes || $this->show_upload_boxes <= 0) + if($badchar = $this->bo->bad_chars($this->comment_files[$file], False, True)) { - if (!$this->show_upload_boxes = $this->prefs['show_upload_boxes']) - { - $this->show_upload_boxes = 1; - } + $this->messages=$GLOBALS['phpgw']->common->error_list(array($file . $this->bo->html_encode(': ' . lang('Comments cannot contain "%1"', $badchar), 1))); + continue; } - # Show file upload boxes. Note the last argument to html (). Repeats $this->show_upload_boxes times - if ($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) + $this->bo->vfs->set_attributes(array( + 'string' => $file, + 'relatives' => array(RELATIVE_ALL), + 'attributes' => array( + 'comment' => stripslashes($this->comment_files[$file]) + ) + )); + + $this->messages=lang('Updated comment for %1', $this->path.'/'.$file); + } + + $this->readFilesInfo(); + $this->filelisting(); + } + + # Handle Renaming Files and Directories + function rename() + { + while(list($from, $to) = each($this->renamefiles)) + { + if($badchar = $this->bo->bad_chars($to, True, True)) { - $vars[form_action]=$GLOBALS[phpgw]->link('/index.php','menuaction=filemanager.uifilemanager.index'); - $vars[path]=$this->path; - $vars[lang_file]=lang('File'); - $vars[lang_comment]=lang('Comment'); - $vars[num_upload_boxes]=$this->show_upload_boxes; - $this->t->set_var($vars); - $this->t->pparse('out','upload_header'); + $this->messages=$GLOBALS['phpgw']->common->error_list(array($this->bo->html_encode(lang('File names cannot contain "%1"', $badchar), 1))); + continue; + } - for($i=0;$i<$this->show_upload_boxes;$i++) - { - $this->t->set_var('row_tr_color',$tr_color); - $this->t->parse('rows','row'); - $this->t->pparse('out','row'); - } + if(ereg("/", $to) || ereg("\\\\", $to)) + { + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang("File names cannot contain \\ or /"))); + } + elseif(!$this->bo->vfs->mv(array( + 'from' => $from, + 'to' => $to + ))) + { + $this->messages= $GLOBALS['phpgw']->common->error_list(array(lang('Could not rename %1 to %2', $this->disppath.'/'.$from, $this->disppath.'/'.$to))); + } + else + { + $this->messages=lang('Renamed %1 to %2', $this->disppath.'/'.$from, $this->disppath.'/'.$to); + } + } + $this->readFilesInfo(); + $this->filelisting(); + } - $vars[lang_upload]=lang('Upload files'); - $vars[change_upload_boxes].=lang('Show') . ' '; - $links.= $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=5', '5'); - $links.=' '; - $links.= $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=10', '10'); - $links.=' '; - $links.= $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=20', '20'); - $links.=' '; - $links.= $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=50', '50'); - $links.=' '; - $links.= lang('upload fields'); - $vars[change_upload_boxes].=$links; - $this->t->set_var($vars); - $this->t->pparse('out','upload_footer'); + # Handle Moving Files and Directories + function moveTo() + { + while(list($num, $file) = each($this->fileman)) + { + if($this->bo->vfs->mv(array( + 'from' => $file, + 'to' => $this->todir . '/' . $file, + 'relatives' => array(RELATIVE_ALL, RELATIVE_NONE) + ))) + { + $moved++; + $this->messages=lang('Moved %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file); + } + else + { + $this->messages = $GLOBALS['phpgw']->common->error_list(array(lang('Could not move %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file))); } } - /* create textfile */ - function createfile() + if($moved) { - $this->createfile=$this->newfile_or_dir; - if ($this->createfile) + $x=0; + } + + $this->readFilesInfo(); + $this->filelisting(); + } + + // Handle Copying of Files and Directories + function copyTo() + { + while(list($num, $file) = each($this->fileman)) + { + if($this->bo->vfs->cp(array( + 'from' => $file, + 'to' => $this->todir . '/' . $file, + 'relatives' => array(RELATIVE_ALL, RELATIVE_NONE) + ))) { - if ($badchar = $this->bo->bad_chars ($this->createfile, True, True)) + $copied++; + $this->message .= lang('Copied %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file); + } + else + { + $this->message .= $GLOBALS['phpgw']->common->error_list(array(lang('Could not copy %1 to %2', $this->disppath.'/'.$file, $this->todir.'/'.$file))); + } + } + + if($copied) + { + $x=0; + } + + $this->readFilesInfo(); + $this->filelisting(); + } + + function createdir() + { + if($this->newdir_x && $this->newfile_or_dir) + { + if($this->bo->badchar = $this->bo->bad_chars($this->newfile_or_dir, True, True)) + { + $this->messages= $GLOBALS['phpgw']->common->error_list(array($this->bo->html_encode(lang('Directory names cannot contain "%1"', $badchar), 1))); + } + + /* TODO is this right or should it be a single $ ? */ + if($$this->newfile_or_dir[strlen($this->newfile_or_dir)-1] == ' ' || $this->newfile_or_dir[0] == ' ') + { + $this->messages= $GLOBALS['phpgw']->common->error_list(array(lang('Cannot create directory because it begins or ends in a space'))); + } + + $ls_array = $this->bo->vfs->ls(array( + 'string' => $this->path . '/' . $this->newfile_or_dir, + 'relatives' => array(RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + )); + + $fileinfo = $ls_array[0]; + + if($fileinfo['name']) + { + if($fileinfo['mime_type'] != 'Directory') { - $this->messages = $GLOBALS['phpgw']->common->error_list (array ( - lang('File names cannot contain "%1"',$badchar), - 1) - ); - - $this->fileListing(); - } - - if ($this->bo->vfs->file_exists (array ( - 'string'=> $this->createfile, - 'relatives' => array (RELATIVE_ALL) - ))) - { - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('File %1 already exists. Please edit it or delete it first.', $this->createfile))); - $this->fileListing(); - } - - - if ($this->bo->vfs->touch (array ( 'string' => $this->createfile, 'relatives' => array (RELATIVE_ALL) )) ) - { - $this->fileman = array (); - $this->fileman[0] = $this->createfile; - $this->edit = 1; - $this->numoffiles++; - $this->edit(); + $this->messages= $GLOBALS['phpgw']->common->error_list(array( + lang('%1 already exists as a file', + $fileinfo['name']) + )); } else { - $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('File %1 could not be created.', $this->createfile))); - $this->fileListing(); + $this->messages= $GLOBALS['phpgw']->common->error_list(array(lang('Directory %1 already exists', $fileinfo['name']))); + } + } + else + { + if($this->bo->vfs->mkdir(array('string' => $this->newfile_or_dir))) + { + $this->messages=lang('Created directory %1', $this->disppath.'/'.$this->newfile_or_dir); + } + else + { + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang('Could not create %1', $this->disppath.'/'.$this->newfile_or_dir))); } } - } - # Handle Editing files - function edit() - { $this->readFilesInfo(); + $this->filelisting(); + } + } - $this->t->set_file(array('filemanager_edit' => 'edit_file.tpl')); - $this->t->set_block('filemanager_edit','row','row'); - - $vars[preview_content]=''; - if ($this->edit_file) + function delete() + { + if( is_array($this->fileman) && count($this->fileman) >= 1) + { + foreach($this->fileman as $filename) { - $this->edit_file_content = stripslashes ($this->edit_file_content); - } - - if ($this->edit_preview_x) - { - $content = $this->edit_file_content; - - $vars[lang_preview_of]=lang('Preview of %1', $this->path.'/'.$edit_file); - - $vars[preview_content]=nl2br($content); - } - elseif ($this->edit_save_x || $this->edit_save_done_x) - { - - $content = $this->edit_file_content; - //die( $content); - if ($this->bo->vfs->write (array ( - 'string' => $this->edit_file, - 'relatives' => array (RELATIVE_ALL), - 'content' => $content - ))) + if($this->bo->vfs->delete(array('string' => $filename))) { - $this->messages=lang('Saved %1', $this->path.'/'.$this->edit_file); - - if($this->edit_save_done_x) - { - $this->readFilesInfo(); - $this->fileListing(); - exit; - } + $this->messages .= lang('Deleted %1', $this->disppath.'/'.$filename).'
'; } else { - $this->messages=lang('Could not save %1', $this->path.'/'.$this->edit_file); - } - } - - # Now we display the edit boxes and forms - for ($j = 0; $j != $this->numoffiles; $j++) - { - # If we're in preview or save mode, we only show the file - # being previewed or saved - if ($this->edit_file && ($this->fileman[$j] != $this->edit_file)) - { - continue; - } - - if ($this->fileman[$j] && $this->bo->vfs->file_exists (array ( 'string' => $this->fileman[$j], 'relatives' => array (RELATIVE_ALL) )) ) - { - if ($this->edit_file) - { - $content = stripslashes ($this->edit_file_content); - } - else - { - $content = $this->bo->vfs->read (array ('string' => $this->fileman[$j])); - } - - $vars[form_action]= $GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path); - $vars[edit_file]=$this->fileman[$j]; - - # We need to include all of the fileman entries for each file's form, - # so we loop through again - for ($i = 0; $i != $this->numoffiles; $i++) - { - if($this->fileman[$i]) $value='value="'.$this->fileman[$i].'"'; - $vars[filemans_hidden]=''; - - } - - $vars[file_content]=$content; - - - $vars[buttonPreview]=$this->inputImage('edit_preview','edit_preview',lang('Preview %1', $this->bo->html_encode ($this->fileman[$j], 1))); - $vars[buttonSave]=$this->inputImage('edit_save','save',lang('Save %1', $this->bo->html_encode ($this->fileman[$j], 1))); - $vars[buttonDone]=$this->inputImage('edit_save_done','ok',lang('Save %1, and go back to file listing ', $this->bo->html_encode ($this->fileman[$j], 1))); - $vars[buttonCancel]=$this->inputImage('edit_cancel','cancel',lang('Cancel editing %1 without saving', $this->bo->html_encode ($this->fileman[$j], 1))); - $this->t->set_var($vars); - $this->t->parse('rows','row'); - $this->t->pparse('out','row'); - + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang('Could not delete %1', $this->disppath.'/'.$filename))); } } } - - - - function history() + else { - if ($this->file) + // make this a javascript func for quicker respons + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang('Please select a file to delete.'))); + } + $this->readFilesInfo(); + $this->filelisting(); + } + + function debug_filemanager() + { + error_reporting(8); + + echo "Filemanager debug:
+ path: {$this->path}
+ disppath: {$this->disppath}
+ cwd: {$this->cwd}
+ lesspath: {$this->lesspath} +

+ eGroupware debug:
+ real getabsolutepath: " . $this->bo->vfs->getabsolutepath(array('target' => False, 'mask' => False, 'fake' => False)) . "
+ fake getabsolutepath: " . $this->bo->vfs->getabsolutepath(array('target' => False)) . "
+ appsession: " . $GLOBALS['phpgw']->session->appsession('vfs','') . "
+ pwd: " . $this->bo->vfs->pwd() . "
"; + + echo '

'; + var_dump($this); + } + + function showUploadboxes() + { + $this->t->set_file(array('upload' => 'upload.tpl')); + $this->t->set_block('upload','upload_header','upload_header'); + $this->t->set_block('upload','row','row'); + $this->t->set_block('upload','upload_footer','upload_footer'); + + # Decide how many upload boxes to show + if(!$this->show_upload_boxes || $this->show_upload_boxes <= 0) + { + if(!$this->show_upload_boxes = $this->prefs['show_upload_boxes']) { - $journal_array = $this->bo->vfs->get_journal (array ( - 'string' => $this->file, - 'relatives' => array (RELATIVE_ALL) - )); + $this->show_upload_boxes = 1; + } + } - if (is_array ($journal_array)) + # Show file upload boxes. Note the last argument to html(). Repeats $this->show_upload_boxes times + if($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add) + { + $vars[form_action]=$GLOBALS[phpgw]->link('/index.php','menuaction=filemanager.uifilemanager.index'); + $vars[path]=$this->path; + $vars[lang_file]=lang('File'); + $vars[lang_comment]=lang('Comment'); + $vars[num_upload_boxes]=$this->show_upload_boxes; + $this->t->set_var($vars); + $this->t->pparse('out','upload_header'); + + for($i=0;$i<$this->show_upload_boxes;$i++) + { + $this->t->set_var('row_tr_color',$tr_color); + $this->t->parse('rows','row'); + $this->t->pparse('out','row'); + } + + $vars[lang_upload]=lang('Upload files'); + $vars[change_upload_boxes].=lang('Show') . ' '; + $links.= $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=5', '5'); + $links.=' '; + $links.= $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=10', '10'); + $links.=' '; + $links.= $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=20', '20'); + $links.=' '; + $links.= $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','show_upload_boxes=50', '50'); + $links.=' '; + $links.= lang('upload fields'); + $vars[change_upload_boxes].=$links; + $this->t->set_var($vars); + $this->t->pparse('out','upload_footer'); + } + } + + /* create textfile */ + function createfile() + { + $this->createfile=$this->newfile_or_dir; + if($this->createfile) + { + if($badchar = $this->bo->bad_chars($this->createfile, True, True)) + { + $this->messages = $GLOBALS['phpgw']->common->error_list(array( + lang('File names cannot contain "%1"',$badchar), + 1) + ); + + $this->fileListing(); + } + + if($this->bo->vfs->file_exists(array( + 'string'=> $this->createfile, + 'relatives' => array(RELATIVE_ALL) + ))) + { + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang('File %1 already exists. Please edit it or delete it first.', $this->createfile))); + $this->fileListing(); + } + + if($this->bo->vfs->touch(array( + 'string' => $this->createfile, + 'relatives' => array(RELATIVE_ALL) + ))) + { + $this->fileman = array(); + $this->fileman[0] = $this->createfile; + $this->edit = 1; + $this->numoffiles++; + $this->edit(); + } + else + { + $this->messages=$GLOBALS['phpgw']->common->error_list(array(lang('File %1 could not be created.', $this->createfile))); + $this->fileListing(); + } + } + } + + # Handle Editing files + function edit() + { + $this->readFilesInfo(); + + $this->t->set_file(array('filemanager_edit' => 'edit_file.tpl')); + $this->t->set_block('filemanager_edit','row','row'); + + $vars[preview_content]=''; + if($this->edit_file) + { + $this->edit_file_content = stripslashes($this->edit_file_content); + } + + if($this->edit_preview_x) + { + $content = $this->edit_file_content; + + $vars[lang_preview_of]=lang('Preview of %1', $this->path.'/'.$edit_file); + + $vars[preview_content]=nl2br($content); + } + elseif($this->edit_save_x || $this->edit_save_done_x) + { + $content = $this->edit_file_content; + //die( $content); + if($this->bo->vfs->write(array( + 'string' => $this->edit_file, + 'relatives' => array(RELATIVE_ALL), + 'content' => $content + ))) + { + $this->messages=lang('Saved %1', $this->path.'/'.$this->edit_file); + + if($this->edit_save_done_x) { - $this->html_table_begin (); - $this->html_table_row_begin (); - $this->html_table_col_begin (); - echo lang('Date'); - $this->html_table_col_end (); - $this->html_table_col_begin (); - echo lang('Version'); - $this->html_table_col_end (); - $this->html_table_col_begin (); - echo lang('Who'); - $this->html_table_col_end (); - $this->html_table_col_begin (); - echo lang('Operation'); - $this->html_table_col_end (); - $this->html_table_row_end (); + $this->readFilesInfo(); + $this->fileListing(); + exit; + } + } + else + { + $this->messages=lang('Could not save %1', $this->path.'/'.$this->edit_file); + } + } - while (list ($num, $journal_entry) = each ($journal_array)) - { - $this->html_table_row_begin (); - $this->html_table_col_begin (); - $this->bo->html_text ($journal_entry['created'] . '   '); - $this->html_table_col_end (); - $this->html_table_col_begin (); - $this->bo->html_text ($journal_entry['version'] . '   ' ); - $this->html_table_col_end (); - $this->html_table_col_begin (); - $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($journal_entry['owner_id']) . '   '); - $this->html_table_col_end (); - $this->html_table_col_begin (); - $this->bo->html_text ($journal_entry['comment']); - $this->html_table_col_end (); - } + # Now we display the edit boxes and forms + for($j = 0; $j != $this->numoffiles; $j++) + { + # If we're in preview or save mode, we only show the file + # being previewed or saved + if($this->edit_file &&($this->fileman[$j] != $this->edit_file)) + { + continue; + } - $this->html_table_end (); - $GLOBALS['phpgw']->common->phpgw_footer (); - $GLOBALS['phpgw']->common->phpgw_exit (); + if($this->fileman[$j] && $this->bo->vfs->file_exists(array( + 'string' => $this->fileman[$j], + 'relatives' => array(RELATIVE_ALL) + ))) + { + if($this->edit_file) + { + $content = stripslashes($this->edit_file_content); } else { - echo lang('No version history for this file/directory'); + $content = $this->bo->vfs->read(array('string' => $this->fileman[$j])); } + $vars[form_action]= $GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path); + $vars[edit_file]=$this->fileman[$j]; + + # We need to include all of the fileman entries for each file's form, + # so we loop through again + for($i = 0; $i != $this->numoffiles; $i++) + { + if($this->fileman[$i]) $value='value="'.$this->fileman[$i].'"'; + $vars[filemans_hidden]=''; + } + + $vars[file_content]=$content; + + $vars[buttonPreview]=$this->inputImage('edit_preview','edit_preview',lang('Preview %1', $this->bo->html_encode($this->fileman[$j], 1))); + $vars[buttonSave]=$this->inputImage('edit_save','save',lang('Save %1', $this->bo->html_encode($this->fileman[$j], 1))); + $vars[buttonDone]=$this->inputImage('edit_save_done','ok',lang('Save %1, and go back to file listing ', $this->bo->html_encode($this->fileman[$j], 1))); + $vars[buttonCancel]=$this->inputImage('edit_cancel','cancel',lang('Cancel editing %1 without saving', $this->bo->html_encode($this->fileman[$j], 1))); + $this->t->set_var($vars); + $this->t->parse('rows','row'); + $this->t->pparse('out','row'); + } - } + } - function view() + function history() + { + if($this->file) { + $journal_array = $this->bo->vfs->get_journal(array( + 'string' => $this->file, + 'relatives' => array(RELATIVE_ALL) + )); - if ($this->file) + if(is_array($journal_array)) { - $ls_array = $this->bo->vfs->ls (array ( - 'string' => $this->path.'/'.$this->file, - 'relatives' => array (RELATIVE_ALL), - 'checksubdirs' => False, - 'nofiles' => True - )); + $this->html_table_begin(); + $this->html_table_row_begin(); + $this->html_table_col_begin(); + echo lang('Date'); + $this->html_table_col_end(); + $this->html_table_col_begin(); + echo lang('Version'); + $this->html_table_col_end(); + $this->html_table_col_begin(); + echo lang('Who'); + $this->html_table_col_end(); + $this->html_table_col_begin(); + echo lang('Operation'); + $this->html_table_col_end(); + $this->html_table_row_end(); - if ($ls_array[0]['mime_type']) + while(list($num, $journal_entry) = each($journal_array)) { - $mime_type = $ls_array[0]['mime_type']; - } - elseif ($this->prefs['viewtextplain']) - { - $mime_type = 'text/plain'; + $this->html_table_row_begin(); + $this->html_table_col_begin(); + $this->bo->html_text($journal_entry['created'] . '   '); + $this->html_table_col_end(); + $this->html_table_col_begin(); + $this->bo->html_text($journal_entry['version'] . '   ' ); + $this->html_table_col_end(); + $this->html_table_col_begin(); + $this->bo->html_text($GLOBALS['phpgw']->accounts->id2name($journal_entry['owner_id']) . '   '); + $this->html_table_col_end(); + $this->html_table_col_begin(); + $this->bo->html_text($journal_entry['comment']); + $this->html_table_col_end(); } + $this->html_table_end(); + $GLOBALS['phpgw']->common->phpgw_footer(); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + else + { + echo lang('No version history for this file/directory'); + } + } + } + + function view() + { + if($this->file) + { + $ls_array = $this->bo->vfs->ls(array( + 'string' => $this->path.'/'.$this->file, + 'relatives' => array(RELATIVE_ALL), + 'checksubdirs' => False, + 'nofiles' => True + )); + + if($ls_array[0]['mime_type']) + { + $mime_type = $ls_array[0]['mime_type']; + } + elseif($this->prefs['viewtextplain']) + { + $mime_type = 'text/plain'; + } + $viewable = array('','text/plain','text/csv','text/html','text/text'); + + if(in_array($mime_type,$viewable)) + { header('Content-type: ' . $mime_type); - echo $this->bo->vfs->read (array ( - 'string' => $this->path.'/'.$this->file, - 'relatives' => array (RELATIVE_NONE) - )); - $GLOBALS['phpgw']->common->phpgw_exit (); + header('Content-disposition: filename="' . $this->file . '"'); } - } - - function download() - { - for ($i = 0; $i != $this->numoffiles; $i++) + else { - if (!$this->fileman[$i]) - { - continue; - } - - $download_browser = CreateObject ('phpgwapi.browser'); - $download_browser->content_header ($this->fileman[$i]); - echo $this->bo->vfs->read (array ('string' => $this->fileman[$i])); - $GLOBALS['phpgw']->common->phpgw_exit (); + $GLOBALS['phpgw']->browser->content_header($this->file,$mime_type); } + echo $this->bo->vfs->read(array( + 'string' => $this->path.'/'.$this->file, + 'relatives' => array(RELATIVE_NONE) + )); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + } + + function download() + { + for($i = 0; $i != $this->numoffiles; $i++) + { + if(!$this->fileman[$i]) + { + continue; + } + + $download_browser = CreateObject('phpgwapi.browser'); + $download_browser->content_header($this->fileman[$i]); + echo $this->bo->vfs->read(array('string' => $this->fileman[$i])); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + } + + //give back an array with all directories except current and dirs that are not accessable + function all_other_directories_options() + { + # First we get the directories in their home directory + $dirs = array(); + $dirs[] = array('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']); + + $tmp_arr=array( + 'string' => $GLOBALS['homedir'], + 'relatives' => array(RELATIVE_NONE), + 'checksubdirs' => True, + 'mime_type' => 'Directory' + ); + + $ls_array = $this->bo->vfs->ls($tmp_arr); + + while(list($num, $dir) = each($ls_array)) + { + $dirs[] = $dir; } - //give back an array with all directories except current and dirs that are not accessable - function all_other_directories_options() - { - # First we get the directories in their home directory - $dirs = array (); - $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']); - $tmp_arr=array ( - 'string' => $GLOBALS['homedir'], - 'relatives' => array (RELATIVE_NONE), + # Then we get the directories in their readable groups' home directories + reset($this->readable_groups); + while(list($num, $group_array) = each($this->readable_groups)) + { + # Don't list directories for groups that don't have access + if(!$this->groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + { + continue; + } + + $dirs[] = array('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']); + + $tmp_arr=array( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array(RELATIVE_NONE), 'checksubdirs' => True, 'mime_type' => 'Directory' ); - $ls_array = $this->bo->vfs->ls ($tmp_arr); - - while (list ($num, $dir) = each ($ls_array)) + $ls_array = $this->bo->vfs->ls($tmp_arr); + while(list($num, $dir) = each($ls_array)) { $dirs[] = $dir; } - - - # Then we get the directories in their readable groups' home directories - reset ($this->readable_groups); - while (list ($num, $group_array) = each ($this->readable_groups)) - { - # Don't list directories for groups that don't have access - if (!$this->groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) - { - continue; - } - - $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']); - - $tmp_arr=array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => True, - 'mime_type' => 'Directory' - ); - - $ls_array = $this->bo->vfs->ls ($tmp_arr); - while (list ($num, $dir) = each ($ls_array)) - { - $dirs[] = $dir; - } - } - - reset ($dirs); - while (list ($num, $dir) = each ($dirs)) - { - if (!$dir['directory']) - { - continue; - } - - # So we don't display // - if ($dir['directory'] != '/') - { - $dir['directory'] .= '/'; - } - - # No point in displaying the current directory, or a directory that doesn't exist - if ((($dir['directory'] . $dir['name']) != $this->path) && $this->bo->vfs->file_exists (array ( 'string' => $dir['directory'] . $dir['name'], 'relatives' => array (RELATIVE_NONE) )) ) - { - //FIXME replace the html_form_option function - $options.=$this->html_form_option ($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']); - } - } - - return $options; } - - /* seek icon for mimetype else return an unknown icon */ - function mime_icon($mime_type, $size=16) + reset($dirs); + while(list($num, $dir) = each($dirs)) { - if(!$mime_type) $mime_type='unknown'; - - $mime_type= str_replace ('/','_',$mime_type); - - $img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_'.strtolower($mime_type)); - if(!$img) $img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_unknown'); - - $icon=''.lang($mime_type).''; - return $icon; - } - - function buttonImage($link,$img='',$help='') - { - - $image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img)); - - if($img) + if(!$dir['directory']) { - return ''; + continue; + } + + # So we don't display // + if($dir['directory'] != '/') + { + $dir['directory'] .= '/'; + } + + # No point in displaying the current directory, or a directory that doesn't exist + if((($dir['directory'] . $dir['name']) != $this->path) && $this->bo->vfs->file_exists(array('string' => $dir['directory'] . $dir['name'],'relatives' => array(RELATIVE_NONE)))) + { + //FIXME replace the html_form_option function + $options .= $this->html_form_option($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']); } } - function inputImage($name,$img='',$help='') - { - $image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img)); - - if($img) - { - return ''; - } - - - } - - function html_form_input ($type = NULL, $name = NULL, $value = NULL, $maxlength = NULL, $size = NULL, $checked = NULL, $string = '', $return = 1) - { - $text = ' '; - if ($type != NULL && $type) - { - if ($type == 'checkbox') - { - $value = $this->bo->string_encode ($value, 1); - } - $text .= 'type="'.$type.'" '; - } - if ($name != NULL && $name) - { - $text .= 'name="'.$name.'" '; - } - if ($value != NULL && $value) - { - $text .= 'value="'.$value.'" '; - } - if (is_int ($maxlength) && $maxlength >= 0) - { - $text .= 'maxlength="'.$maxlength.'" '; - } - if (is_int ($size) && $size >= 0) - { - $text .= 'size="'.$size.'" '; - } - if ($checked != NULL && $checked) - { - $text .= 'checked '; - } - - return ''; - } - - function html_form_option ($value = NULL, $displayed = NULL, $selected = NULL, $return = 0) - { - $text = ' '; - if ($value != NULL && $value) - { - $text .= ' value="'.$value.'" '; - } - if ($selected != NULL && $selected) - { - $text .= ' selected'; - } - return ''.$displayed.''; - } - - - function encode_href($href = NULL, $args = NULL , $extra_args) - { - $href = $this->bo->string_encode ($href, 1); - $all_args = $args.'&'.$this->bo->string_encode ($extra_args, 1); - - $address = $GLOBALS['phpgw']->link ($href, $all_args); - - return $address; - - } - - function html_link ($href = NULL, $args = NULL , $extra_args, $text = NULL, $return = 1, $encode = 1, $linkonly = 0, $target = NULL) - { - // unset($encode); - if ($encode) - { - $href = $this->bo->string_encode ($href, 1); - $all_args = $args.'&'.$this->bo->string_encode ($extra_args, 1); - } - else - { - // $href = $this->bo->string_encode ($href, 1); - $all_args = $args.'&'.$extra_args; - - } - ### - # This decodes / back to normal - ### - // $all_args = preg_replace ("/%2F/", "/", $all_args); - // $href = preg_replace ("/%2F/", "/", $href); - - - /* Auto-detect and don't disturb absolute links */ - if (!preg_match ("|^http(.{0,1})://|", $href)) - { - //Only add an extra / if there isn't already one there - - // die(SEP); - if (!($href[0] == SEP)) - { - $href = SEP . $href; - } - - /* $phpgw->link requires that the extra vars be passed separately */ - // $link_parts = explode ("?", $href); - $address = $GLOBALS['phpgw']->link ($href, $all_args); - // $address = $GLOBALS['phpgw']->link ($href); - } - else - { - $address = $href; - } - - /* If $linkonly is set, don't add any HTML */ - if ($linkonly) - { - $rstring = $address; - } - else - { - if ($target) - { - $target = 'target='.$target; - } - - $text = trim ($text); - $rstring = ''.$text.''; - } - - return ($this->bo->eor ($rstring, $return)); - } - - function html_table_begin ($width = NULL, $border = NULL, $cellspacing = NULL, $cellpadding = NULL, $rules = NULL, $string = '', $return = 0) - { - if ($width != NULL && $width) - $width = "width=$width"; - if (is_int ($border) && $border >= 0) - $border = "border=$border"; - if (is_int ($cellspacing) && $cellspacing >= 0) - $cellspacing = "cellspacing=$cellspacing"; - if (is_int ($cellpadding) && $cellpadding >= 0) - $cellpadding = "cellpadding=$cellpadding"; - if ($rules != NULL && $rules) - $rules = "rules=$rules"; - - $rstring = "
- '.$help.' - - -
"; - return ($this->bo->eor ($rstring, $return)); - } - - - function html_table_end ($return = 0) - { - $rstring = "
"; - return ($this->bo->eor ($rstring, $return)); - } - - function html_table_row_begin ($align = NULL, $halign = NULL, $valign = NULL, $bgcolor = NULL, $string = '', $return = 0) - { - if ($align != NULL && $align) - $align = "align=$align"; - if ($halign != NULL && $halign) - $halign = "halign=$halign"; - if ($valign != NULL && $valign) - $valign = "valign=$valign"; - if ($bgcolor != NULL && $bgcolor) - $bgcolor = "bgcolor=$bgcolor"; - $rstring = ""; - return ($this->bo->eor ($rstring, $return)); - } - - function html_table_row_end ($return = 0) - { - $rstring = ""; - return ($this->bo->eor ($rstring, $return)); - } - - function html_table_col_begin ($align = NULL, $halign = NULL, $valign = NULL, $rowspan = NULL, $colspan = NULL, $string = '', $return = 0) - { - if ($align != NULL && $align) - $align = "align=$align"; - if ($halign != NULL && $halign) - $halign = "halign=$halign"; - if ($valign != NULL && $valign) - $valign = "valign=$valign"; - if (is_int ($rowspan) && $rowspan >= 0) - $rowspan = "rowspan=$rowspan"; - if (is_int ($colspan) && $colspan >= 0) - $colspan = "colspan=$colspan"; - - $rstring = ""; - return ($this->bo->eor ($rstring, $return)); - } - - function html_table_col_end ($return = 0) - { - $rstring = ""; - return ($this->bo->eor ($rstring, $return)); - } - + return $options; } + + /* seek icon for mimetype else return an unknown icon */ + function mime_icon($mime_type, $size=16) + { + if(!$mime_type) $mime_type='unknown'; + + $mime_type= str_replace ('/','_',$mime_type); + + $img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_'.strtolower($mime_type)); + if(!$img) $img=$GLOBALS['phpgw']->common->image('filemanager','mime'.$size.'_unknown'); + + $icon=''.lang($mime_type).''; + return $icon; + } + + function buttonImage($link,$img='',$help='') + { + $image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img)); + + if($img) + { + return ' + '.$help.' + '; + } + } + + function inputImage($name,$img='',$help='') + { + $image=$GLOBALS['phpgw']->common->image('filemanager','button_'.strtolower($img)); + + if($img) + { + return ' + + '; + } + } + + function html_form_input($type = NULL, $name = NULL, $value = NULL, $maxlength = NULL, $size = NULL, $checked = NULL, $string = '', $return = 1) + { + $text = ' '; + if($type != NULL && $type) + { + if($type == 'checkbox') + { + $value = $this->bo->string_encode($value, 1); + } + $text .= 'type="'.$type.'" '; + } + if($name != NULL && $name) + { + $text .= 'name="'.$name.'" '; + } + if($value != NULL && $value) + { + $text .= 'value="'.$value.'" '; + } + if(is_int($maxlength) && $maxlength >= 0) + { + $text .= 'maxlength="'.$maxlength.'" '; + } + if(is_int($size) && $size >= 0) + { + $text .= 'size="'.$size.'" '; + } + if($checked != NULL && $checked) + { + $text .= 'checked '; + } + + return ''; + } + + function html_form_option($value = NULL, $displayed = NULL, $selected = NULL, $return = 0) + { + $text = ' '; + if($value != NULL && $value) + { + $text .= ' value="'.$value.'" '; + } + if($selected != NULL && $selected) + { + $text .= ' selected'; + } + return ''.$displayed.''; + } + + function encode_href($href = NULL, $args = NULL , $extra_args) + { + $href = $this->bo->string_encode($href, 1); + $all_args = $args.'&'.$this->bo->string_encode($extra_args, 1); + + $address = $GLOBALS['phpgw']->link($href, $all_args); + + return $address; + } + + function html_link($href = NULL, $args = NULL , $extra_args, $text = NULL, $return = 1, $encode = 1, $linkonly = 0, $target = NULL) + { + // unset($encode); + if($encode) + { + $href = $this->bo->string_encode($href, 1); + $all_args = $args.'&'.$this->bo->string_encode($extra_args, 1); + } + else + { + // $href = $this->bo->string_encode($href, 1); + $all_args = $args.'&'.$extra_args; + } + ### + # This decodes / back to normal + ### + // $all_args = preg_replace("/%2F/", "/", $all_args); + // $href = preg_replace("/%2F/", "/", $href); + + /* Auto-detect and don't disturb absolute links */ + if(!preg_match("|^http(.{0,1})://|", $href)) + { + //Only add an extra / if there isn't already one there + + // die(SEP); + if(!($href[0] == SEP)) + { + $href = SEP . $href; + } + + /* $phpgw->link requires that the extra vars be passed separately */ + // $link_parts = explode("?", $href); + $address = $GLOBALS['phpgw']->link($href, $all_args); + // $address = $GLOBALS['phpgw']->link($href); + } + else + { + $address = $href; + } + + /* If $linkonly is set, don't add any HTML */ + if($linkonly) + { + $rstring = $address; + } + else + { + if($target) + { + $target = 'target='.$target; + } + + $text = trim($text); + $rstring = ''.$text.''; + } + + return($this->bo->eor($rstring, $return)); + } + + function html_table_begin($width = NULL, $border = NULL, $cellspacing = NULL, $cellpadding = NULL, $rules = NULL, $string = '', $return = 0) + { + if($width != NULL && $width) + { + $width = "width=$width"; + } + if(is_int($border) && $border >= 0) + { + $border = "border=$border"; + } + if(is_int($cellspacing) && $cellspacing >= 0) + { + $cellspacing = "cellspacing=$cellspacing"; + } + if(is_int($cellpadding) && $cellpadding >= 0) + { + $cellpadding = "cellpadding=$cellpadding"; + } + if($rules != NULL && $rules) + { + $rules = "rules=$rules"; + } + + $rstring = ""; + return($this->bo->eor($rstring, $return)); + } + + function html_table_end($return = 0) + { + $rstring = "
"; + return($this->bo->eor($rstring, $return)); + } + + function html_table_row_begin($align = NULL, $halign = NULL, $valign = NULL, $bgcolor = NULL, $string = '', $return = 0) + { + if($align != NULL && $align) + { + $align = "align=$align"; + } + if($halign != NULL && $halign) + { + $halign = "halign=$halign"; + } + if($valign != NULL && $valign) + { + $valign = "valign=$valign"; + } + if($bgcolor != NULL && $bgcolor) + { + $bgcolor = "bgcolor=$bgcolor"; + } + $rstring = ""; + return($this->bo->eor($rstring, $return)); + } + + function html_table_row_end($return = 0) + { + $rstring = ""; + return($this->bo->eor($rstring, $return)); + } + + function html_table_col_begin($align = NULL, $halign = NULL, $valign = NULL, $rowspan = NULL, $colspan = NULL, $string = '', $return = 0) + { + if($align != NULL && $align) + { + $align = "align=$align"; + } + if($halign != NULL && $halign) + { + $halign = "halign=$halign"; + } + if($valign != NULL && $valign) + { + $valign = "valign=$valign"; + } + if(is_int($rowspan) && $rowspan >= 0) + { + $rowspan = "rowspan=$rowspan"; + } + if(is_int($colspan) && $colspan >= 0) + { + $colspan = "colspan=$colspan"; + } + + $rstring = ""; + return($this->bo->eor($rstring, $return)); + } + + function html_table_col_end($return = 0) + { + $rstring = ""; + return($this->bo->eor($rstring, $return)); + } + }