True, 'help' => True, 'view' => True, 'export'=> True, 'touch' => True, 'history' => True, 'edit' => True, 'fileModels'=>True, 'uploadModel'=>True ); //keep var $bo; var $vfs_functions; var $t; //template object var $dispath; var $cwd; var $lesspath; var $readable_groups; var $files_array; var $numoffiles; var $dispsep; var $target; var $prefs;//array var $groups_applications; //originally post_vars // var $goto; var $current_config; var $goto_x; var $todir; var $changedir; // for switching dir. var $cdtodir; // for switching dir. // var $createdir; var $newfile_or_dir; var $newdir_x; var $newfile_x; var $createfile_var; var $move_to_x; // var $copy_to; var $copy_to_x; var $edit_x; var $edit_file; var $edit_preview_x; var $edit_save_x; var $edit_save_done_x; var $edit_cancel_x; var $comment_files; var $upload_x; var $uploadprocess; // this ones must be checked thorougly; var $fileman = Array(); //var $fileman; var $path; var $file; // FIXME WHERE IS THIS FILLED? var $sortby; var $messages = array(); var $show_upload_boxes; var $now; function uifilemanager() { // error_reporting(8); $GLOBALS['phpgw']->browser = CreateObject('phpgwapi.browser'); $this->now = date('Y-m-d'); $this->bo = CreateObject('filemanager.bofilemanager'); $this->vfs_functions = CreateObject('filemanager.vfs_functions'); $this->t = $GLOBALS['phpgw']->template; $c = CreateObject('phpgwapi.config','filemanager'); $c->read_repository(); $this->current_config = $c->config_data; // here local vars are created from the HTTP 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'])) { $$name = $GLOBALS['HTTP_GET_VARS'][$name]; $this->$name = $GLOBALS['HTTP_GET_VARS'][$name]; } $to_decode = array ( 'op' => array('op' => ''), 'path' => array('path' => ''), 'filename' => array('filename' => ''), 'file' => array('file' => ''), 'sortby' => array('sortby' => ''), 'messages' => array('messages' => ''), 'comment_files' => array('comment_files' => ''), 'show_upload_boxes' => array('show_upload_boxes' => '') ); reset($to_decode); while(list($var, $conditions) = each($to_decode)) { while(list($condvar, $condvalue) = each($conditions)) { if(isset($$condvar) && ($condvar == $var || $$condvar == $condvalue)) { if(is_array($$var)) { $temp = array(); while(list($varkey, $varvalue) = each($$var)) { if(is_int($varkey)) { $temp[$varkey] = stripslashes(base64_decode(urldecode(($varvalue)))); } else { $temp[stripslashes(base64_decode(urldecode(($varkey))))] = $varvalue; } } $this->$var = $temp; } elseif(isset($$var)) { $this->$var = stripslashes(base64_decode(urldecode($$var))); } } } } // get appl. and user prefs $pref = CreateObject('phpgwapi.preferences', $this->bo->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[$this->bo->appname]; //FIXME check appname var in _debug_array //always show name $this->prefs[name] =1; if($this->prefs['viewinnewwin']) { $this->target = '_blank'; } /* Check for essential directories admin must be able to disable these tests */ // check if basedir exist $test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); if($test[mime_type]!='Directory') { die('Base directory does not exist, Ask adminstrator to check the global configuration.'); } $test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->fakebase, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); if($test[mime_type]!='Directory') { $this->bo->vfs->override_acl = 1; $this->bo->vfs->mkdir(array( 'string' => $this->bo->fakebase, 'relatives' => array(RELATIVE_NONE) )); $this->bo->vfs->override_acl = 0; //test one more time $test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->fakebase, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); if($test[mime_type]!='Directory') { die('Fake Base directory does not exist and could not be created, please ask the administrator to check the global configuration.'); } else { $this->messages[]= lang('Fake Base Dir did not exist, eGroupWare created a new one.'); } } $test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->homedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); if($test[mime_type]!='Directory') { $this->bo->vfs->override_acl = 1; $this->bo->vfs->mkdir(array( 'string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE) )); $this->bo->vfs->set_quota(array( 'string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE), 'new_quota' => $this->current_config['filemanager_quota_size'] )); $this->bo->vfs->override_acl = 0; //test one more time $test=$this->bo->vfs->get_real_info(array('string' => $this->bo->basedir.$this->bo->homedir, 'relatives' => array(RELATIVE_NONE), 'relative' => False)); if($test[mime_type]!='Directory') { die('Your Home Dir does not exist and could not be created, please ask the adminstrator to check the global configuration.'); } else { $this->messages[]= lang('Your Home Dir did not exist, eGroupWare created a new one.'); // FIXME we just created a fresh home dir so we know there nothing in it so we have to remove all existing content } } } function fileModels() { $GLOBALS['phpgw_info']['flags'] = array ( 'currentapp' => 'filemanager', 'noheader' => False, 'nonavbar' => False, 'nofooter' => False, 'noappheader' => False, 'enable_browser_class' => True ); $GLOBALS['phpgw']->common->phpgw_header(); $this->t->set_file(array('models' => 'fileModels.tpl')); $this->t->set_block('models','header','header'); $this->t->set_block('models','body','body'); $this->t->set_block('models','footer','footer'); $this->t->set_var('url_1', './index.php?menuaction=filemanager.uifilemanager.uploadModel&model=article'); $this->t->set_var('model_1','article'); $this->t->set_var('lang_1',lang('article')); $this->t->set_var('url_2','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=calendar'); $this->t->set_var('model_2','calendar'); $this->t->set_var('lang_2',lang('calendar')); $this->t->set_var('url_3','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=todo'); $this->t->set_var('model_3','todo'); $this->t->set_var('lang_3',lang('todo')); $this->t->set_var('url_4','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=slide'); $this->t->set_var('model_4','slide'); $this->t->set_var('lang_4',lang('slide')); $this->t->set_var('url_5','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=cards'); $this->t->set_var('model_5','cards'); $this->t->set_var('lang_5',lang('cards')); $this->t->set_var('url_6','./index.php?menuaction=filemanager.uifilemanager.uploadModel&model=resume'); $this->t->set_var('model_6','resume'); $this->t->set_var('lang_6',lang('resume')); $this->t->pparse('out','models'); } function uploadModel(){ $GLOBALS['phpgw_info']['flags'] = array ( 'currentapp' => 'filemanager', 'noheader' => False, 'nonavbar' => False, 'nofooter' => False, 'noappheader' => False, 'enable_browser_class' => True ); $GLOBALS['phpgw']->common->phpgw_header(); $filename = lang('new')."_".lang($this->model).rand(0,1000).".html"; $this->bo->vfs->cp(array( 'from'=> PHPGW_SERVER_ROOT . '/filemanager/templates/default/'.$this->model.'.html', 'to'=> $filename, 'relatives' => array(RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) )); $this->bo->vfs->set_attributes(array( 'string'=> $filename, 'relatives' => array(RELATIVE_ALL), 'attributes'=> array( 'mime_type' => "text/html", 'comment' => "" ) )); $this->filename = $filename; $this->edit(); } function index() { $GLOBALS['phpgw_info']['flags'] = array ( 'currentapp' => 'filemanager', 'noheader' => False, 'nonavbar' => False, 'nofooter' => False, 'noappheader' => False, 'enable_browser_class' => True ); $GLOBALS['phpgw']->common->phpgw_header(); echo ""; echo ""; echo ""; echo ""; echo ""; include('load_lang.php'); # Page to process users # Code is fairly hackish at the beginning, but it gets better # Highly suggest turning wrapping off due to long SQL queries ### # Some hacks to set and display directory paths correctly ### // new method for switching to a new dir. if($this->changedir=='true' && $this->cdtodir || $this->goto_x) { $this->path = $this->cdtodir; } if(!$this->path) { $this->path = $this->bo->vfs->pwd(); if(!$this->path || $this->bo->vfs->pwd(array('full' => False)) == '') { $this->path = $this->bo->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)); $pwd = $this->bo->vfs->pwd(); if(!$this->cwd = substr($this->path, strlen($this->bo->homedir) + 1)) { $this->cwd = '/'; } else { $this->cwd = substr($pwd, strrpos($pwd, '/') + 1); } $this->disppath = $this->path; /* This just prevents // in some cases */ if($this->path == '/') { $this->dispsep = ''; } else { $this->dispsep = '/'; } if(!($this->lesspath = substr($this->path, 0, strrpos($this->path, '/')))) { $this->lesspath = '/'; } # Get their readable groups to be used throughout the script $acl = array(); $groups = array(); $acl = $GLOBALS['phpgw']->acl->get_ids_for_location($GLOBALS['phpgw_info']['user']['account_id'],1,'filemanager'); if (is_array($acl)) foreach($acl as $key => $value){ $info = array(); $info = $GLOBALS['phpgw']->accounts->get_account_data($value); $groups[$key]['account_id'] = $value; $groups[$key]['account_lid'] = $info[$value]['lid']; $groups[$key]['account_name'] = $info[$value]['firstname']; $groups[$key]['account_lastname'] = $info[$value]['lastname']; $groups[$key]['account_fullname'] = $info[$value]['fullname']; } $this->readable_groups = array(); while(list($num, $account) = each($groups)) { 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(); foreach ($this->readable_groups as $value) { $applications = CreateObject('phpgwapi.applications', $value['account_id']); $this->groups_applications[$value['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('+^'.$this->bo->fakebase.'\/(.*)(\/|$)+U', $this->path, $matches)) && $matches[1] != $this->bo->userinfo['account_lid']) //FIXME matches not defined { $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id($matches[1]);//FIXME matches not defined } else { $this->bo->vfs->working_id = $this->bo->userinfo['username']; } # Check available permissions for $this->path, so we can disable unusable operations in user interface $path = explode('/',$this->path); $owner_id = $this->bo->vfs->ownerOf($this->bo->fakebase,$path[2]); $user_id = $GLOBALS['phpgw_info']['user']['account_id']; if ($owner_id == $user_id) { $this->can_read = True; $this->can_add = True; $this->can_edit = True; $this->can_delete = True; $this->can_private = True; }else { $acl = CreateObject ('phpgwapi.acl', $owner_id); $acl->account_id = $owner_id; $acl->read_repository(); $rights = $acl->get_rights($user_id); $this->can_read = $rights & PHPGW_ACL_READ; $this->can_add = $rights & PHPGW_ACL_ADD; $this->can_edit = $rights & PHPGW_ACL_EDIT; $this->can_delete = $rights & PHPGW_ACL_DELETE; $this->can_private = $rights & PHPGW_ACL_PRIVATE; } # if is different path than home and no permission allowed if($this->path != $this->bo->homedir && $this->path != $this->bo->fakebase && $this->path != '/' && !$this->can_read) { echo lang('You do not have access to %1', $this->path); $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->homedir, lang('Go to your home directory')); $GLOBALS['phpgw']->common->phpgw_footer(); $GLOBALS['phpgw']->common->phpgw_exit(); } $this->bo->userinfo['working_id'] = $this->bo->vfs->working_id; $this->bo->userinfo['working_lid'] = $GLOBALS['phpgw']->accounts->id2name($this->bo->userinfo['working_id']); # Verify path is real if($this->path != $this->bo->homedir && $this->path != '/' && $this->path != $this->bo->fakebase) { if(!$this->bo->vfs->file_exists(array( 'string' => $this->path, 'relatives' => array(RELATIVE_NONE) ))) { $this->messages[] = lang('Error:').lang('Directory %1 does not exist', $this->path); $this->html_link('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->bo->homedir, lang('Go to your home directory')); $GLOBALS['phpgw']->common->phpgw_footer(); $GLOBALS['phpgw']->common->phpgw_exit(); } } /* Update the vfs */ if ($this->update_x == 'True') { $this->bo->vfs->update_real(array( 'string' => $this->path, 'relatives' => array(RELATIVE_ALL) )); } # Default is to sort by name if(!$this->sortby) { $this->sortby = 'name'; } # main action switch // FIXME this will become a switch if($this->newfile_x && $this->newfile_or_dir) // create new textfile { $this->createfile(); } elseif($this->newfile_or_dir && $this->newdir_x) { $this->createdir(); } elseif($this->uploadprocess) { $this->fileUpload(); } elseif($this->upload_x || $this->show_upload_boxes) { $this->showUploadboxes(); } elseif($this->copy_to_x) { $this->copyTo(); } elseif($this->move_to_x) { $this->moveTo(); } 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) { $this->edit(); } else { $this->readFilesInfo(); $this->fileListing(); } } function fileListing() { $this->t->set_file(array('filemanager_list_t' => 'filelisting.tpl')); $this->t->set_block('filemanager_list_t','filemanager_header','filemanager_header'); $this->t->set_block('filemanager_list_t','column','column'); $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) { while(list($num, $name) = each($this->prefs)) { if($name) { $columns++; } } $columns++; $usedSpace = $this->bo->vfs->get_size(array( 'string' => $this->path, 'relatives' => array(RELATIVE_NONE) )); $quota = $this->bo->vfs->get_quota(array( 'string' => $this->path )); $vars[usedSpace]=''; $vars[quotaSize]=''; $vars[path]=''; $vars[css]=' '; $vars[toolbar0]=$this->toolbar('location'); $vars[toolbar1]=$this->toolbar('list_nav'); if(count($this->messages)>0) { foreach($this->messages as $msg) { $messages.='
'.$msg.'
'; } } $vars[messages]=$messages; $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')); $this->t->set_var('mini_bar',' '); reset($this->bo->file_attributes); if($this->numoffiles>0) { while(list($internal, $displayed) = each($this->bo->file_attributes)) { if($this->prefs[$internal]) { if ($internal != 'owner') $col_data=''.$displayed.''; else $col_data=''.$displayed.''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } } $this->t->set_var('row_tr_color','#dedede'); $this->t->parse('rows','row'); $this->t->pparse('out','row'); } else { $lang_nofiles=lang('No files in this directory.'); } $vars[lang_no_files]=$lang_nofiles; if($this->prefs['dotdot'] && $this->prefs['name'] && $this->path != '/') { $this->t->set_var('actions',''); $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->lesspath); $col_data=''; $col_data.=' ..'; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column'); 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++) { $files = $this->files_array[$i]; if(!$this->prefs['dotfiles'] && ereg("^\.", $files['name'])) { continue; } # Checkboxes if($this->path != $this->bo->fakebase && $this->path != '/') { $cbox=''; $this->t->set_var('actions',$cbox); } else { $this->t->set_var('actions',''); } $minibar_data=""; if($this->can_private) { if ($files['type'] == "1") { $image = $GLOBALS['phpgw']->common->image('filemanager','button_lock'); } else { $image = $GLOBALS['phpgw']->common->image('filemanager','button_unlock'); } $link=$this->encode_href('/index.php','menuaction=filemanager.vfs_functions.setRestricted','file='.$files['name'].'&path='.$this->path); $minibar_data = ''; } if ($files['mime_type'] == "text/html") { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.export','file='.$files['name'].'&path='.$this->path); $image=$GLOBALS['phpgw']->common->image('filemanager','button_export'); $minibar_data.=''; } else $minibar_data.= " "; $this->t->set_var('mini_bar',$minibar_data); # File name and icon if($files['mime_type'] == 'Directory') { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path.$this->dispsep.$files['name']); $icon=$this->mime_icon($files['mime_type']); $col_data=''.$icon.' '; $col_data.=''.$files['name'].' '; } else { if($this->prefs['viewonserver'] && isset($this->bo->filesdir) && !$files['link_directory']) { #FIXME $clickview = $this->filesdir.$pwd.'/'.$files['name']; } else { $icon=$this->mime_icon($files['mime_type']); $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.view','file='.$files['name'].'&path='.$this->path); $col_data=''.$icon.' '. ''.$files['name'].''; } } $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column'); # MIME type if($this->prefs['mime_type']) { $col_data=$files['mime_type']; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # File size if($this->prefs['size']) { $tmp_arr=array( 'string' => $files['directory'] . '/' . $files['name'], 'relatives' => array(RELATIVE_NONE) ); if($files['mime_type'] != 'Directory') $tmp_arr['checksubdirs'] = false; $size = $this->bo->vfs->get_size($tmp_arr); $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']) { $timestamp = $this->vfs_functions->dateString2timeStamp($files['created']); if (time() - $timestamp > 86400) // Older than yesterday $col_data=date("Y-m-d",$timestamp); else $col_data=date("H:i",$timestamp); $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Date modified if($this->prefs['modified']) { if ($files['modified'] != ''){ $timestamp = $this->vfs_functions->dateString2timeStamp($files['modified']); if (time() - $timestamp > 86400) // Older than yesterday $col_data=date("Y-m-d",$timestamp); else $col_data=date("H:i",$timestamp); } else $col_data=''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Owner name if($this->prefs['owner']) { $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']) { $this->html_table_col_begin(); if($files['createdby_id']) { $col_data=$GLOBALS['phpgw']->accounts->id2name($files['createdby_id']); } else $col_data=''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Modified by name if($this->prefs['modifiedby_id']) { if($files['modifiedby_id']) { $col_data=$GLOBALS['phpgw']->accounts->id2name($files['modifiedby_id']); } else $col_data=''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Application if($this->prefs['app']) { $col_data=$files['app']; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # Comment if($this->prefs['comment']) { if (strlen($files['comment']) == 0 ) $files['comment'] = "<".lang("no comments").">"; $col_data=''.$files['comment'].''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } # 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'].''; $this->t->set_var('col_data',$col_data); $this->t->parse('columns','column',True); } $usedspace += $files['size']; $this->t->set_var('row_tr_color',''); $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); if($this->path == $this->bo->homedir || $this->path == $this->bo->fakebase) { $vars[lang_unused_space]=lang('Unused space'); $vars[unused_space]=$this->bo->borkb($this->bo->userinfo['hdspace'] - $usedspace, NULL, 1); $tmp_arr=array( 'string' => $this->path, 'relatives' => array(RELATIVE_NONE) ); $ls_array = $this->bo->vfs->ls($tmp_arr); $vars[lang_total_files]=lang('Total Files'); $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(); } function readFilesInfo() { // start files info # Read in file info from database to use in the rest of the script # $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 == $this->bo->fakebase) { // FIXME this test can be removed if(!$this->bo->vfs->file_exists(array('string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE)))) { $this->bo->vfs->mkdir(array('string' => $this->bo->homedir, 'relatives' => array(RELATIVE_NONE))); } $ls_array = $this->bo->vfs->ls(array( 'string' => $this->bo->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)) { # If the group doesn't have access to this app, we don't show it /*if(!$this->groups_applications[$group_array['account_name']][$this->bo->appname]['enabled']) { continue; } */ if(!$this->bo->vfs->file_exists(array('string' => $this->bo->fakebase.'/'.$group_array['account_name'],'relatives' => array(RELATIVE_NONE)))) { $this->bo->vfs->override_acl = 1; $this->bo->vfs->mkdir(array( 'string' => $this->bo->fakebase.'/'.$group_array['account_name'], 'relatives' => array(RELATIVE_NONE) )); // FIXME we just created a fresh group dir so we know there nothing in it so we have to remove all existing content $this->bo->vfs->override_acl = 0; $this->bo->vfs->set_attributes(array('string' => $this->bo->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' => $this->bo->fakebase.'/'.$group_array['account_name'],'relatives' => array(RELATIVE_NONE),'checksubdirs' => False,'nofiles' => True)); $this->files_array[] = $ls_array[0]; $this->numoffiles++; } } else { $ls_array = $this->bo->vfs->ls(array( 'string' => $this->path, 'relatives' => array(RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => False, 'orderby' => $this->sortby )); while(list($num, $file_array) = each($ls_array)) { $this->numoffiles++; $this->files_array[] = $file_array; } } if(!is_array($this->files_array)) { $this->files_array = array(); } // end file count } function toolbar($type) { switch($type) { case 'location': $toolbar=''; // $toolbar.=' | '; // go up icon when we're not at the top, dont allow to go outside /home = fakebase if($this->path != '/' && $this->path != $this->bo->fakebase) { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->lesspath); $toolbar.=$this->linkButton($link,'up',lang('go up')); } // go home icon when we're not home already if($this->path != $this->bo->homedir) { $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->bo->homedir); $toolbar.=$this->linkButton($link,'home',lang('go home')); } // reload button with this url $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path); $toolbar.=$this->linkButton($link,'reload',lang('reload')); $toolbar.=' | '.lang('Location').': '; //$toolbar.=' '; $current_option=''; // selectbox for change/move/and copy to $dirs_options=$this->all_other_directories_options(); $toolbar.=' | '; //$toolbar.=$this->inputImage('goto','goto',lang('Quick jump to')); // upload button /*if($this->path != '/' && $this->path != $this->bo->fakebase && $this->can_add) { // upload button $toolbar.=$this->inputImage('upload','upload',lang('Upload')); }*/ $toolbar.='
'; //TODO : create folder with problems //$toolbar3.=$this->inputImage('newdir','createdir',lang('Create Folder')); $toolbar.=$this->inputImage('new','createfile',lang('New...')); } if($this->can_edit) { // edit text file button $toolbar.=$this->inputImage('edit','edit',lang('edit')); } if($this->can_edit) { $toolbar.=$this->inputImage('rename','rename',lang('Rename')); } if($this->can_delete) { $toolbar.=$this->inputImage('delete','delete',lang('Delete')); } } // copy and move buttons if($this->path != '/' && $this->path != $this->bo->fakebase) { $dirs_options=$this->all_other_directories_options(); if (strlen($dirs_options) > 0){ $toolbar3.=$this->inputImage('copy_to','copy_to',lang('Copy to')); if ($this->can_delete) $toolbar3.=$this->inputImage('move_to','move_to',lang('Move to')); } $toolbar3.=' | '; } if($toolbar3) { $toolbar.=$toolbar3; /* $toolbar.=' |