diff --git a/filemanager/CHANGELOG b/filemanager/CHANGELOG
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/filemanager/inc/class.bofilemanager.inc.php b/filemanager/inc/class.bofilemanager.inc.php
index a8e534b0b7..047298307f 100755
--- a/filemanager/inc/class.bofilemanager.inc.php
+++ b/filemanager/inc/class.bofilemanager.inc.php
@@ -4,6 +4,7 @@
{
var $so;
var $vfs;
+
var $sep;
var $file_attributes;
var $help_info;
@@ -51,16 +52,13 @@
function bofilemanager()
{
+ $this->so = CreateObject('filemanager.sofilemanager');
+ $this->so->db_init();
+
$this->vfs = CreateObject('phpgwapi.vfs');
- // This comes from the top of main (pim) //
error_reporting (4);
- /* if (@!is_object($GLOBALS['phpgw']->vfs))
- {
- $GLOBALS['phpgw']->vfs = CreateObject ('phpgwapi.vfs');
- }
- */
### Start Configuration Options ###
### These are automatically set in phpGW - do not edit ###
@@ -97,35 +95,6 @@
define ('NULL', '');
}
-
- // FIXME
- require (PHPGW_APP_INC . '/db.inc.php');
-
- /* Set up any initial db settings */
- db_init ();
- //die('hallo?');
-
- ###
- # Get user settings from database
- ###
-
- /* We have to define these by hand in phpGW, or rely on it's templates */
-
- define ('HTML_TABLE_FILES_HEADER_BG_COLOR', '');
- define ('HTML_TABLE_FILES_HEADER_TEXT_COLOR', 'maroon');
- define ('HTML_TABLE_FILES_COLUMN_HEADER_BG_COLOR', '#cccccc');
- define ('HTML_TABLE_FILES_COLUMN_HEADER_TEXT_COLOR', '#000000');
- define ('HTML_TABLE_FILES_BG_COLOR', '#dedede');
- define ('HTML_TABLE_FILES_TEXT_COLOR', 'maroon');
- define ('HTML_TEXT_ERROR_COLOR', 'red');
- define ('HTML_TEXT_NAVIGATION_BACK_TO_USER', lang('Back to file manager'));
-
- ###
- # Need to include this here so they recognize the settings
- ###
-
- // require (PHPGW_APP_INC . '/html.inc.php');
-
###
# Define the list of file attributes. Format is "internal_name" => "Displayed name"
# This is used both by internally and externally for things like preferences
@@ -152,47 +121,10 @@
# but it does do something
###
- $this->help_info = Array(
-array ("up", "The Up button takes you to the directory above the current directory. For example, if you're in /home/jdoe/mydir, the Up button would take you to /home/jdoe."),
-array ("directory_name", "The name of the directory you're currently in."),
-array ("home", "The Home button takes you to your personal home directory."),
-array ("sort_by", "Click on any of the column headers to sort the list by that column."),
-array ("filename", "The name of the file or directory."),
-array ("mime_type", "The MIME-type of the file. Examples include text/plain, text/html, image/jpeg. The special MIME-type Directory is used for directories."),
-array ("size", "The size of the file or directory in the most convenient units: bytes (B), kilobytes (KB), megabytes (MB), gigabytes (GB). Sizes for directories include subfiles and subdirectories."),
-array ("created", "When the file or directory was created."),
-array ("modified", "When the file or directory was last modified."),
-array ("owner", "The owner of the file or directory. This can be a user or group name."),
-array ("created_by", "Displays who created the file or directory."),
-array ("modified_by", "Displays who last modified the file or directory."),
-array ("application", "The application associated with the file or directory. Usually the application used to create it. A blank application field is ok."),
-array ("comment", "The comment for the file or directory. Comments can be set when creating the file or directory, and created or edited any time thereafter."),
-array ("version", "The current version for the file or directory. Clicking on the version number will display a list of changes made to the file or directory."),
-array ("edit", "Edit the text of the selected file(s). You can select more than one file; this is useful when you want to copy part of one file into another. Clicking Preview will show you a preview of the file. Click Save to save your changes."),
-array ("rename", "Rename the selected file(s). You can select as many files or directories as you want. You are presented with a text field to enter the new name of each file or directory."),
-array ("delete", "Delete the selected file(s). You can select as many files or directories as you want. When deleting directories, the entire directory and all of its contents are deleted. You will not be prompted to make sure you want to delete the file(s); make sure you really want to delete them before clicking Delete."),
-array ("edit_comments", "Create a comment for a file or directory, or edit an existing comment. You can select as many files or directories as you want."),
-array ("go_to", "The Go to button takes you to the directory selected in the drop down [directory_list|Directory List]."),
-array ("copy_to", "This will copy all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."),
-array ("move_to", "This will move all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."),
-array ("directory_list", "The Directory List contains a list of all directories you have (at least) read access to. Selecting a directory and clicking one of the [go_to|Go to]/[copy_to|Copy to]/[move_to|Move to] buttons will perform the selected action on that directory. For example, if you select \"/home/somegroup/reports\" from the Directory List, and click the \"[copy_to|Copy to]\" button, all selected files and directories will be copied to \"/home/somegroup/reports\"."),
-array ("download", "Download the first selected file to your local computer. You can only download one file at a time. Directories cannot be downloaded, only files."),
-array ("create_folder", "Creates a directory (folder == directory). The name of the directory is specified in the text box next to the Create Folder button."),
-array ("create_file", "Creates a file in the current directory. The name of the file is specified in the text box next to the Create File button. After clicking the Create File button you will be presented with the [edit|Edit] screen, where you may edit the file you just created. If you do not with to make any changes to the file at this time, simply click the Save button and the file will be saved as an empty file."),
-array ("command_line", "Enter a Unix-style command line here, which will be executed when the [execute|Execute] button is pressed. If you don't know what this is, you probably should turn the option off in the Preferences."),
-array ("execute", "Clicking the Execute button will execute the Unix-style [command_line|command line] specified in the text box above. If you don't know what this is, you probably should turn the option off in the Preferences."),
-array ("update", "Sync the database with the filesystem for the current directory. This is useful if you use another interface to access the same files. Any new files or directories in the current directory will be read in, and the attributes for the other files will be updated to reflect any changes to the filesystem. Update is run automatically every few page loads (currently every 20 page loads as of this writing, but that may have changed by now)."),
-array ("file_stats", "Various statistics on the number and size of the files in the current directory. In some situations, these reflect different statistics. For example, when in / or the base directory."),
-array ("upload_file", "The full path of the local file to upload. You can type it in or use the Browse.. button to select it. The file will be uploaded to the current directory. You cannot upload directories, only files."),
-array ("upload_comment", "The inital comment to use for the newly uploaded file. Totally optional and completely arbitrary. You can [edit_comments|create or edit the comment] at any time in the future."),
-array ("upload_files", "This will upload the files listed in the input boxes above, and store them in the current directory."),
-array ("show_upload_fields", "This setting determines how many [upload_files|upload fields] will be shown at once. You can change the default number that will be shown in the [preferences].")
-);
-
}
- function borkb ($size, $enclosed = NULL, $return = 0)
+ function borkb ($size, $enclosed = NULL, $return = 1)
{
if (!$size)
$size = 0;
@@ -270,7 +202,7 @@ array ("show_upload_fields", "This setting determines how many [upload_files|upl
global $phpgw;
if ($lang)
- $string = $this->translate ($string);
+ $string = lang($string);
if ($times == NULL)
$times = 1;
@@ -294,6 +226,7 @@ array ("show_upload_fields", "This setting determines how many [upload_files|upl
function string_encode ($string, $return = False)
{
+ //var_dump($string);
if (preg_match ("/=(.*)(&|$)/U", $string))
{
$rstring = $string;
@@ -342,12 +275,5 @@ array ("show_upload_fields", "This setting determines how many [upload_files|upl
return ($this->eor ($rstring, $return));
}
-
- function translate ($text)
- {
- return ($GLOBALS['phpgw']->lang($text));
- }
-
-
}
?>
diff --git a/filemanager/inc/class.bophpwebhosting.inc.php b/filemanager/inc/class.bophpwebhosting.inc.php
deleted file mode 100755
index 63e717aaea..0000000000
--- a/filemanager/inc/class.bophpwebhosting.inc.php
+++ /dev/null
@@ -1,709 +0,0 @@
- True
- );
-
- var $so;
- var $vfs;
- var $rootdir;
- var $fakebase;
- var $appname;
- var $settings;
- var $filesdir;
- var $hostname;
- var $userinfo = Array();
- var $homedir;
- var $file_attributes;
- var $help_info;
-
- var $errors;
-
- var $rename;
- var $delete;
- var $go;
- var $copy;
- var $move;
- var $download;
- var $createdir;
- var $newdir;
- var $createfile;
- var $newfile;
-
- var $fileman = Array();
- var $op;
- var $file;
- var $help_name;
- var $path;
- var $disppath;
- var $dispsep;
- var $sortby = 'name';
- var $messages = Array();
- var $renamefiles;
- var $comment_files = Array();
- var $show_upload_boxes = 5;
- var $memberships;
- var $now;
- var $matches;
-
-// var $debug = True;
- var $debug = False;
-
- function bophpwebhosting()
- {
- $this->vfs = CreateObject('phpgwapi.vfs');
-
- $to_decode = Array(
- /*
- Decode
- 'var' when 'avar' == 'value'
- or
- 'var' when 'var' is set
- */
-
- 'errors',
- 'op',
- 'path',
- 'file',
- 'todir',
- 'sortby',
- 'fileman',
- 'messages',
- 'help_name',
- 'renamefiles',
- 'comment_files',
- 'show_upload_boxes',
- 'submit',
- 'rename',
- 'delete',
- 'go',
- 'copy',
- 'move',
- 'download',
- 'newfile',
- 'createfile',
- 'newdir',
- 'createdir'
- );
-
- $c_to_decode = count($to_decode);
- for($i=0;$i<$c_to_decode;$i++)
- {
- $this->initialize_vars($to_decode[$i]);
- }
-
- $this->rootdir = $this->vfs->basedir;
- $this->fakebase = $this->vfs->fakebase;
- $this->appname = $GLOBALS['phpgw_info']['flags']['currentapp'];
- $this->settings = $GLOBALS['phpgw_info']['user']['preferences'][$this->appname];
-
- if(stristr($this->rootdir,PHPGW_SERVER_ROOT))
- {
- $this->filesdir = substr($this->rootdir,strlen(PHPGW_SERVER_ROOT));
- }
- else
- {
- $this->filesdir = '';
- }
- $this->hostname = $GLOBALS['phpgw_info']['server']['webserver_url'].$this->filesdir;
- $this->userinfo['username'] = $GLOBALS['phpgw_info']['user']['account_id'];
- $this->userinfo['account_lid'] = $GLOBALS['phpgw']->accounts->id2name($this->userinfo['username']);
- $this->userinfo['hdspace'] = 10000000000;
- $this->homedir = $this->fakebase.SEP.$this->userinfo['account_lid'];
-
- if(!defined('NULL'))
- {
- define('NULL','');
- }
-
- $this->so = CreateObject('filemanager.sophpwebhosting');
-
- $this->file_attributes = Array(
- 'name' => 'Filename',
- 'deletable' => 'Deletable',
- 'mime_type' => 'MIME Type',
- 'size' => 'Size',
- 'created' => 'Created',
- 'modified' => 'Modified',
- 'owner' => 'Owner',
- 'createdby_id' => 'Created by',
- 'modifiedby_id' => 'Modified by',
- 'app' => 'Application',
- 'comment' => 'Comment',
- 'version' => 'Version'
- );
-
- if($this->go)
- {
- $this->path = $this->todir;
- }
-
- if($this->debug)
- {
- echo 'DEBUG: bo.bophpwebhosting: PATH = '.$this->path.'
'."\n";
- }
-
- if(!$this->path)
- {
- $this->path = $this->vfs->pwd();
- if (!$this->path || $this->vfs->pwd(False) == '')
- {
- $this->path = $this->homedir;
- }
- }
- $this->vfs->cd(False,False,Array(RELATIVE_NONE));
- $this->vfs->cd($this->path,False,Array(RELATIVE_NONE));
-
- $this->pwd = $this->vfs->pwd();
-
- if (!$this->cwd = substr($this->path,strlen($this->homedir) + 1))
- {
- $this->cwd = '/';
- }
- else
- {
- $this->cwd = substr($this->pwd,strrpos($this->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 = '/';
- }
-
- $this->now = date('Y-m-d');
-
- if($this->debug)
- {
- echo 'PHPWebHosting debug:
'
- . 'path: '.$this->path.'
'
- . 'disppath: '.$this->disppath.'
'
- . 'cwd: '.$this->cwd.'
'
- . 'lesspath: '.$this->lesspath.'
'
- . 'fakebase: '.$this->fakebase.'
'
- . 'homedir: '.$this->homedir.'
'
- . 'phpGW debug:
- phpGW debug:
+ eGroupware debug: ';
- break;
- case 5:
- $break_str = '
'
- . 'real getabsolutepath: '.$this->vfs->getabsolutepath(False, False, False).'
'
- . 'fake getabsolutepath: '.$this->vfs->getabsolutepath(False).'
'
- . 'appsession: '.$GLOBALS['phpgw']->session->appsession('vfs','').'
'
- . 'pwd: '.$this->vfs->pwd().'
';
- }
-
-
- ###
- # Get their memberships to be used throughout the script
- ###
-
- $this->memberships = $GLOBALS['phpgw']->accounts->membership($this->userinfo['username']);
-
- if(!is_array($this->memberships))
- {
- settype($this->memberships,'array');
- $this->memberships = Array();
- }
-
- $group_applications = CreateObject('phpgwapi.applications');
- while(list($num,$group_array) = each($this->memberships))
- {
- $group_applications->account_id = get_account_id($GLOBALS['phpgw']->accounts->name2id($group_array['account_name']));
- $this->membership_applications[$group_array['account_name']] = $group_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->fakebase.'\/(.*)(\/|$)+U',$this->path,$this->matches)) && $this->matches[1] != $this->userinfo['account_lid'])
- {
- $this->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id($matches[1]);
- }
- else
- {
- $this->vfs->working_id = $this->userinfo['username'];
- }
- }
-
- function initialize_vars($name)
- {
- $var = ($GLOBALS['HTTP_GET_VARS'][$name]?$GLOBALS['HTTP_GET_VARS'][$name]:'');
- $var = ($GLOBALS['HTTP_POST_VARS'][$name]?$GLOBALS['HTTP_POST_VARS'][$name]:$var);
- if($this->debug)
- {
- echo ''."\n";
- }
- if(is_array($this->$name) && $var)
- {
- $temp = Array();
- while(list($varkey,$varvalue) = each($var))
- {
- if(is_int($varkey))
- {
- $temp[$varkey] = urldecode($varvalue);
- }
- else
- {
- $temp[urldecode($varkey)] = $varvalue;
- }
- }
- }
- elseif($var)
- {
- $temp = urldecode($var);
- }
- if(isset($temp))
- {
- $this->$name = $temp;
- }
- }
-
- function load_files()
- {
- ###
- # 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
- ###
-
- if ($this->path == $this->fakebase)
- {
- if (!$this->vfs->file_exists($this->homedir,Array(RELATIVE_NONE)))
- {
- $this->vfs->mkdir($this->homedir,Array(RELATIVE_NONE));
- }
-
- $ls_array = $this->vfs->ls($this->homedir,Array(RELATIVE_NONE),False,False,True);
- $this->files_array[] = $ls_array[0];
-
- reset ($this->memberships);
- while(list($num, $group_array) = each($this->memberships))
- {
- ###
- # If the group doesn't have access to this app, we don't show it
- ###
-
- if (!$this->membership_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled'])
- {
- continue;
- }
-
- if (!$this->vfs->file_exists($this->fakebase.'/'.$group_array['account_name'],Array(RELATIVE_NONE)))
- {
- $this->vfs->mkdir($this->fakebase.'/'.$group_array['account_name'],Array(RELATIVE_NONE));
- $this->vfs->set_attributes($this->fakebase.'/'.$group_array['account_name'],Array(RELATIVE_NONE),Array('owner_id' => $group_array['account_id'], 'createdby_id' => $group_array['account_id']));
- }
-
- $ls_array = $this->vfs->ls($this->fakebase.'/'.$group_array['account_name'],Array(RELATIVE_NONE),False,False,True);
-
- $this->files_array[] = $ls_array[0];
- }
- }
- else
- {
- $ls_array = $this->vfs->ls($this->path,Array(RELATIVE_NONE),False,False,False,$this->sortby);
-
- if ($this->debug)
- {
- echo '# of files found in "'.$this->path.'" : '.count($ls_array).'
'."\n";
- }
-
- while(list($num,$file_array) = each($ls_array))
- {
- $this->files_array[] = $file_array;
- if ($this->debug)
- {
- echo 'Filename: '.$file_array['name'].'
'."\n";
- }
- }
- }
- if(!is_array($this->files_array))
- {
- $this->files_array = Array();
- }
-
- return $this->files_array;
- }
-
- function convert_date($data)
- {
- if($data && $data != '0000-00-00')
- {
- $year = substr($data,0,4);
- $month = substr($data,5,2);
- $day = substr($data,8,2);
- $datetime = mktime(0,0,0,$month,$day,$year);
- $data = date($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'],$datetime);
- }
- else
- {
- $data = ' ';
- }
- return $data;
- }
-
- function f_go()
- {
- $this->path = $this->todir;
- }
-
- function f_delete()
- {
- $numoffiles = count($this->fileman);
- for($i=0;$i!=$numoffiles;$i++)
- {
- if($this->fileman[$i])
- {
- $ls_array = $this->vfs->ls($this->path.SEP.$this->fileman[$i],Array(RELATIVE_NONE),False,False,True);
- $fileinfo = $ls_array[0];
- if($fileinfo)
- {
- if($fileinfo['mime_type'] == 'Directory')
- {
- $mime_type = $fileinfo['mime_type'];
- }
- else
- {
- $mime_type = 'File';
- }
- if($this->vfs->delete($this->path.SEP.$this->fileman[$i],Array(RELATIVE_USER_NONE)))
- {
- $errors[] = ''.$mime_type.' Deleted: '.$this->path.SEP.$this->fileman[$i].'';
- }
- else
- {
- $errors[] = 'Could not delete '.$this->path.SEP.$this->fileman[$i].'';
- }
- }
- else
- {
- $errors[] = ''.$this->path.SEP.$this->fileman[$i].' does not exist!';
- }
- }
- }
- return $errors;
- }
-
- function f_copy()
- {
- $numoffiles = count($this->fileman);
- for($i=0;$i!=$numoffiles;$i++)
- {
- if($this->fileman[$i])
- {
- if($this->vfs->cp($this->path.SEP.$this->fileman[$i],$this->todir.SEP.$this->fileman[$i],Array(RELATIVE_NONE,RELATIVE_NONE)))
- {
- $errors[] = 'File copied: '.$this->path.SEP.$this->fileman[$i].' to '.$this->todir.SEP.$this->fileman[$i].'';
- }
- else
- {
- $errors[] = 'Could not copy '.$this->path.SEP.$this->fileman[$i].' to '.$this->todir.SEP.$this->fileman[$i].'';
- }
- }
- }
- return $errors;
- }
-
- function f_move()
- {
- $numoffiles = count($this->fileman);
- for($i=0;$i!=$numoffiles;$i++)
- {
- if($this->fileman[$i])
- {
- if($this->vfs->mv($this->path.SEP.$this->fileman[$i],$this->todir.SEP.$this->fileman[$i],Array(RELATIVE_NONE,RELATIVE_NONE)))
- {
- $errors[] = 'File moved: '.$this->path.SEP.$this->fileman[$i].' to '.$this->todir.SEP.$this->fileman[$i].'';
- }
- else
- {
- $errors[] = 'Could not move '.$this->path.SEP.$this->fileman[$i].' to '.$this->todir.SEP.$this->fileman[$i].'';
- }
- }
- }
- return $errors;
- }
-
- function f_download()
- {
- $numoffiles = count($this->fileman);
- for($i=0;$i!=$numoffiles;$i++)
- {
- if($this->fileman[$i] && $this->vfs->file_exists($this->bo->path.SEP.$this->bo->fileman[$i],Array(RELATIVE_NONE)))
- {
- execmethod($this->appname.'.ui'.$this->appname.'.view_file',
- Array(
- 'path' => $this->path,
- 'file' => $this->fileman[$i]
- )
- );
- $errors[] = 'File downloaded: '.$this->path.SEP.$this->fileman[$i].'';
- }
- else
- {
- $errors[] = 'File does not exist: '.$this->path.SEP.$this->fileman[$i].'';
- }
- }
- return $errors;
- }
-
- function f_newdir()
- {
- if ($this->newdir && $this->createdir)
- {
- if ($badchar = $this->bad_chars($this->createdir,True,True))
- {
- $errors[] = 'Directory names cannot contain "'.$badchar.'"';
- return $errors;
- }
-
- if (substr($this->createdir,strlen($this->createdir)-1,1) == ' ' || substr($this->createdir,0,1) == ' ')
- {
- $errors[] = 'Cannot create directory because it begins or ends in a space';
- return $errors;
- }
-
- $ls_array = $this->vfs->ls($this->path.SEP.$this->createdir,Array(RELATIVE_NONE),False,False,True);
- $fileinfo = $ls_array[0];
-
- if ($fileinfo['name'])
- {
- if ($fileinfo['mime_type'] != 'Directory')
- {
- $errors[] = ''.$fileinfo['name'].' already exists as a file';
- }
- else
- {
- $errors[] = 'Directory '.$fileinfo['name'].' already exists.';
- }
- }
- else
- {
- if ($this->vfs->mkdir($this->path.SEP.$this->createdir,Array(RELATIVE_NONE)))
- {
- $errors[] = 'Created directory '.$this->path.SEP.$this->createdir.'';
-// $this->path = $this->path.SEP.$this->createdir;
- }
- else
- {
- $errors[] = 'Could not create '.$this->path.SEP.$this->createdir.'';
- }
- }
- }
- return $errors;
- }
-
- function f_newfile()
- {
- if ($this->newfile && $this->createfile)
- {
- if($badchar = $this->bad_chars($this->createfile,True,True))
- {
- $errors[] = 'Filenames cannot contain "'.$badchar.'"';
- return $errors;
- }
- if($this->vfs->file_exists($this->path.SEP.$this->createfile,Array(RELATIVE_NONE)))
- {
- $errors[] = 'File '.$this->path.SEP.$this->createfile.' already exists. Please edit it or delete it first.';
- return $errors;
- }
- if(!$this->vfs->touch($this->path.SEP.$this->createfile,Array(RELATIVE_NONE)))
- {
- $errors[] = 'File '.$this->path.SEP.$this->createfile.' could not be created.';
- }
- }
- else
- {
- $errors[] = 'Filename not provided!';
- }
- return $errors;
- }
-
- function load_help_info()
- {
- $this->help_info = Array(
- array ("up", "The Up button takes you to the directory above the current directory. For example, if you're in /home/jdoe/mydir, the Up button would take you to /home/jdoe."),
- array ("directory_name", "The name of the directory you're currently in."),
- array ("home", "The Home button takes you to your personal home directory."),
- array ("sort_by", "Click on any of the column headers to sort the list by that column."),
- array ("filename", "The name of the file or directory."),
- array ("mime_type", "The MIME-type of the file. Examples include text/plain, text/html, image/jpeg. The special MIME-type Directory is used for directories."),
- array ("size", "The size of the file or directory in the most convenient units: bytes (B), kilobytes (KB), megabytes (MB), gigabytes (GB). Sizes for directories include subfiles and subdirectories."),
- array ("created", "When the file or directory was created."),
- array ("modified", "When the file or directory was last modified."),
- array ("owner", "The owner of the file or directory. This can be a user or group name."),
- array ("created_by", "Displays who created the file or directory."),
- array ("modified_by", "Displays who last modified the file or directory."),
- array ("application", "The application associated with the file or directory. Usually the application used to create it. A blank application field is ok."),
- array ("comment", "The comment for the file or directory. Comments can be set when creating the file or directory, and created or edited any time thereafter."),
- array ("version", "The current version for the file or directory. Clicking on the version number will display a list of changes made to the file or directory."),
- array ("edit", "Edit the text of the selected file(s). You can select more than one file; this is useful when you want to copy part of one file into another. Clicking Preview will show you a preview of the file. Click Save to save your changes."),
- array ("rename", "Rename the selected file(s). You can select as many files or directories as you want. You are presented with a text field to enter the new name of each file or directory."),
- array ("delete", "Delete the selected file(s). You can select as many files or directories as you want. When deleting directories, the entire directory and all of its contents are deleted. You will not be prompted to make sure you want to delete the file(s); make sure you really want to delete them before clicking Delete."),
- array ("edit_comments", "Create a comment for a file or directory, or edit an existing comment. You can select as many files or directories as you want."),
- array ("go_to", "The Go to button takes you to the directory selected in the drop down [directory_list|Directory List]."),
- array ("copy_to", "This will copy all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."),
- array ("move_to", "This will move all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."),
- array ("directory_list", "The Directory List contains a list of all directories you have (at least) read access to. Selecting a directory and clicking one of the [go_to|Go to]/[copy_to|Copy to]/[move_to|Move to] buttons will perform the selected action on that directory. For example, if you select \"/home/somegroup/reports\" from the Directory List, and click the \"[copy_to|Copy to]\" button, all selected files and directories will be copied to \"/home/somegroup/reports\"."),
- array ("download", "Download the first selected file to your local computer. You can only download one file at a time. Directories cannot be downloaded, only files."),
- array ("create_folder", "Creates a directory (folder == directory). The name of the directory is specified in the text box next to the Create Folder button."),
- array ("create_file", "Creates a file in the current directory. The name of the file is specified in the text box next to the Create File button. After clicking the Create File button you will be presented with the [edit|Edit] screen, where you may edit the file you just created. If you do not with to make any changes to the file at this time, simply click the Save button and the file will be saved as an empty file."),
- array ("command_line", "Enter a Unix-style command line here, which will be executed when the [execute|Execute] button is pressed. If you don't know what this is, you probably should turn the option off in the Preferences."),
- array ("execute", "Clicking the Execute button will execute the Unix-style [command_line|command line] specified in the text box above. If you don't know what this is, you probably should turn the option off in the Preferences."),
- array ("update", "Sync the database with the filesystem for the current directory. This is useful if you use another interface to access the same files. Any new files or directories in the current directory will be read in, and the attributes for the other files will be updated to reflect any changes to the filesystem. Update is run automatically every few page loads (currently every 20 page loads as of this writing, but that may have changed by now)."),
- array ("file_stats", "Various statistics on the number and size of the files in the current directory. In some situations, these reflect different statistics. For example, when in / or the base directory."),
- array ("upload_file", "The full path of the local file to upload. You can type it in or use the Browse.. button to select it. The file will be uploaded to the current directory. You cannot upload directories, only files."),
- array ("upload_comment", "The inital comment to use for the newly uploaded file. Totally optional and completely arbitrary. You can [edit_comments|create or edit the comment] at any time in the future."),
- array ("upload_files", "This will upload the files listed in the input boxes above, and store them in the current directory."),
- array ("show_upload_fields", "This setting determines how many [upload_files|upload fields] will be shown at once. You can change the default number that will be shown in the preferences.")
- );
- }
-
- function borkb ($size,$enclosed = NULL,$return = 0)
- {
- if(!$size)
- {
- $size = 0;
- }
-
- if($enclosed)
- {
- $left = '(';
- $right = ')';
- }
-
- if($size<1024)
- {
- return $left.$size.' B '.$right;
- }
- else
- {
- return $left.round($size/1024).' KB'.$right;
- }
- }
-
- ###
- # Check for and return the first unwanted character
- ###
-
- function bad_chars($string,$all = True,$return = 0)
- {
- if($all)
- {
- if (preg_match("-([\\/<>\'\"\&])-", $string, $badchars))
- {
- $rstring = $badchars[1];
- }
- }
- else
- {
- if (preg_match("-([\\/<>])-", $string, $badchars))
- {
- $rstring = $badchars[1];
- }
- }
- return $rstring;
- }
-
- ###
- # Match character in string using ord ().
- ###
- function ord_match($string, $charnum)
- {
- for ($i=0;$i
- path: $path
- disppath: $disppath
- cwd: $cwd
- lesspath: $lesspath
-
- 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 () . "
";
- }
-
- ###
# Get their readable groups to be used throughout the script
- ###
-
- $groups = array ();
+ $groups = array();
$groups = $GLOBALS['phpgw']->accounts->get_list ('groups');
- $readable_groups = array ();
+ $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
- ))
- )
- {
- $readable_groups[$account['account_lid']] = Array('account_id' => $account['account_id'], 'account_name' => $account['account_lid']);
- }
- }
-
- $groups_applications = array ();
-
- while (list ($num, $group_array) = each ($readable_groups))
- {
- $group_id = $GLOBALS['phpgw']->accounts->name2id ($group_array['account_name']);
-
- $applications = CreateObject('phpgwapi.applications', $group_id);
- $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', $path, $matches)) && $matches[1] != $GLOBALS['userinfo']['account_lid'])
- {
- $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id ($matches[1]);
- }
- else
- {
- $this->bo->vfs->working_id = $GLOBALS['userinfo']['username'];
- }
-
- if ($path != $GLOBALS['homedir']
- && $path != $GLOBALS['fakebase']
- && $path != '/'
- && !$this->bo->vfs->acl_check (array (
- 'string' => $path,
- 'relatives' => array (RELATIVE_NONE),
- 'operation' => PHPGW_ACL_READ
- ))
- )
- {
- echo $GLOBALS['phpgw']->common->error_list (array (lang('You do not have access to %1', $path)));
- $this->html_break (2);
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], lang('Go to your home directory'));
- $this->html_page_close ();
- }
-
- $GLOBALS['userinfo']['working_id'] = $this->bo->vfs->working_id;
- $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLOBALS['userinfo']['working_id']);
-
- ###
- # If their home directory doesn't exist, we create it
- # Same for group directories
- ###
-
- if (($path == $GLOBALS['homedir'])
- && !$this->bo->vfs->file_exists (array (
- 'string' => $GLOBALS['homedir'],
- 'relatives' => array (RELATIVE_NONE)
- ))
-)
-{
- $this->bo->vfs->override_acl = 1;
-
- if (!$this->bo->vfs->mkdir (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE))))
- {
- // FIXME (pim) ??
- $p = $this->bo->vfs->path_parts (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE)));
- echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not create directory %1', $GLOBALS['homedir'] . ' (' . $p->real_full_path . ')')));
- }
-
- $this->bo->vfs->override_acl = 0;
-}
-
-###
-# Verify path is real
-###
-
-if ($path != $GLOBALS['homedir'] && $path != '/' && $path != $GLOBALS['fakebase'])
-{
- if (!$this->bo->vfs->file_exists (array ('string' => $path, 'relatives' => array (RELATIVE_NONE))))
- {
- echo $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 does not exist', $path)));
- $this->html_break (2);
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], lang('Go to your home directory'));
- $this->html_break (2);
- $this->html_link_back ();
- $this->html_page_close ();
- }
-}
-
-/* Update if they request it, or one out of 20 page loads */
-srand ((double) microtime() * 1000000);
-if ($update || rand (0, 19) == 4)
-{
- $this->bo->vfs->update_real (array ('string' => $path, 'relatives' => array (RELATIVE_NONE)));
-}
-
-###
-# Check available permissions for $path, so we can disable unusable operations in user interface
-###
-
-if ($this->bo->vfs->acl_check (array (
- 'string' => $path,
- 'relatives' => array (RELATIVE_NONE),
- 'operation' => PHPGW_ACL_ADD
-))
- )
- {
- $can_add = True;
- }
-
- ###
- # Default is to sort by name
- ###
-
- if (!$sortby)
- {
- $sortby = 'name';
- }
-
- ###
- # Decide how many upload boxes to show
- ###
- //var_dump($show_upload_boxes);
- //die();
-
- if (!$show_upload_boxes || $show_upload_boxes <= 0)
- {
- if (!$show_upload_boxes = $GLOBALS['settings']['show_upload_boxes'])
+ if ($this->bo->vfs->acl_check (array ('owner_id' => $account['account_id'], 'operation' => PHPGW_ACL_READ)))
{
- $show_upload_boxes = 5;
+ $this->readable_groups[$account['account_lid']] = Array('account_id' => $account['account_id'], 'account_name' => $account['account_lid']);
}
}
- ###
- # 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
- ###
+ $groups_applications = array ();
- $numoffiles = 0;
- if ($path == $GLOBALS['fakebase'])
+ while (list ($num, $group_array) = each ($this->readable_groups))
{
- 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)));
- }
+ $group_id = $GLOBALS['phpgw']->accounts->name2id ($group_array['account_name']);
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $GLOBALS['homedir'],
- 'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => False,
- 'nofiles' => True
- )
- );
- $files_array[] = $ls_array[0];
- $numoffiles++;
- // $files_array = $ls_array;
- // $numoffiles = count($ls_array);
+ $applications = CreateObject('phpgwapi.applications', $group_id);
+ $groups_applications[$group_array['account_name']] = $applications->read_account_specific ();
+ }
- reset ($readable_groups);
- while (list ($num, $group_array) = each ($readable_groups))
+ # 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 the group doesn't have access to this app, we don't show it
- ###
-
- if (!$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)
- ))
- )
- {
- $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->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']
- )
- )
- );
- }
-
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],
- 'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => False,
- 'nofiles' => True
- )
-);
-
-$files_array[] = $ls_array[0];
-
-$numoffiles++;
- }
+ $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id ($matches[1]);
}
else
{
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $path,
- 'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => False,
- 'nofiles' => False,
- 'orderby' => $sortby
- )
- );
-
- if ($phpwh_debug)
- {
- echo '# of files found in "'.$path.'" : '.count($ls_array).'
'."\n";
+ $this->bo->vfs->working_id = $GLOBALS['userinfo']['username'];
}
-
- while (list ($num, $file_array) = each ($ls_array))
+
+
+ # 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 )))
{
- $numoffiles++;
- $files_array[] = $file_array;
- if ($phpwh_debug)
- {
- echo 'Filename: '.$file_array['name'].'
'."\n";
- }
- }
- }
+ $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'));
- if (!is_array ($files_array))
- {
- $files_array = array ();
- }
-
- if ($download)
- {
- for ($i = 0; $i != $numoffiles; $i++)
- {
- if (!$fileman[$i])
- {
- continue;
- }
-
- $download_browser = CreateObject ('phpgwapi.browser');
- $download_browser->content_header ($fileman[$i]);
- echo $this->bo->vfs->read (array ('string' => $fileman[$i]));
+ $GLOBALS['phpgw']->common->phpgw_footer ();
$GLOBALS['phpgw']->common->phpgw_exit ();
}
- }
- if ($op == 'view' && $file)
- {
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $path.'/'.$file,
- 'relatives' => array (RELATIVE_ALL),
- 'checksubdirs' => False,
- 'nofiles' => True
- )
- );
+ $GLOBALS['userinfo']['working_id'] = $this->bo->vfs->working_id;
+ $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLOBALS['userinfo']['working_id']);
- if ($ls_array[0]['mime_type'])
- {
- $mime_type = $ls_array[0]['mime_type'];
- }
- elseif ($GLOBALS['settings']['viewtextplain'])
- {
- $mime_type = 'text/plain';
- }
-
- header('Content-type: ' . $mime_type);
- echo $this->bo->vfs->read (array (
- 'string' => $path.'/'.$file,
- 'relatives' => array (RELATIVE_NONE)
- )
- );
- $GLOBALS['phpgw']->common->phpgw_exit ();
-}
-
-if ($op == 'history' && $file)
-{
- $journal_array = $this->bo->vfs->get_journal (array (
- 'string' => $file,
- 'relatives' => array (RELATIVE_ALL)
- )
-);
-
-if (is_array ($journal_array))
-{
- $this->html_table_begin ();
- $this->html_table_row_begin ();
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('Date'));
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('Version'));
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('Who'));
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('Operation'));
- $this->html_table_col_end ();
- $this->html_table_row_end ();
-
- 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_nbsp (3, 1));
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->bo->html_text ($journal_entry['version'] . $this->html_nbsp (3, 1));
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($journal_entry['owner_id']) . $this->html_nbsp (3, 1));
- $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 ();
- $this->html_page_close ();
-}
-else
-{
- $this->html_text_bold (lang('No version history for this file/directory'));
-}
-
- }
-
- if ($newfile && $createfile)
+ # 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 ($badchar = $this->bo->bad_chars ($createfile, True, True))
+ $this->bo->vfs->override_acl = 1;
+
+ if (!$this->bo->vfs->mkdir (array (
+ 'string' => $GLOBALS['homedir'],
+ 'relatives' => array (RELATIVE_NONE)
+ )))
{
- echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"',$badchar), 1)));
- $this->html_break (2);
- $this->html_link_back ();
- $this->html_page_close ();
+ $p = $this->bo->vfs->path_parts ($pim_tmp_arr);
+
+ $this->messages= $GLOBALS['phpgw']->common->error_list (array (
+ lang('Could not create directory %1',
+ $GLOBALS['homedir'] . ' (' . $p->real_full_path . ')'
+ )));
}
- if ($this->bo->vfs->file_exists (array (
- 'string' => $createfile,
- 'relatives' => array (RELATIVE_ALL)
- ))
- )
- {
- echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 already exists. Please edit it or delete it first.', $createfile)));
- $this->html_break (2);
- $this->html_link_back ();
- $this->html_page_close ();
+ $this->bo->vfs->override_acl = 0;
}
- if ($this->bo->vfs->touch (array (
- 'string' => $createfile,
- 'relatives' => array (RELATIVE_ALL)
- ))
- )
- {
- $fileman = array ();
- $fileman[0] = $createfile;
- $edit = 1;
- $numoffiles++;
- }
- else
- {
- echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 could not be created.', $createfile)));
- }
- }
-
- if ($op == 'help' && $help_name)
- {
- while (list ($num, $help_array) = each ($help_info))
- {
- if ($help_array[0] != $help_name)
- continue;
-
- $help_array[1] = preg_replace ("/\[(.*)\|(.*)\]/Ue", "html_help_link ('\\1', '\\2', False, True)", $help_array[1]);
- $help_array[1] = preg_replace ("/\[(.*)\]/Ue", "html_help_link ('\\1', '\\1', False, True)", $help_array[1]);
-
- $this->html_font_set ('4');
- $title = ereg_replace ('_', ' ', $help_array[0]);
- $title = ucwords ($title);
- $this->bo->html_text ($title);
- $this->html_font_end ();
-
- $this->html_break (2);
-
- $this->html_font_set ('2');
- $this->bo->html_text ($help_array[1]);
- $this->html_font_end ();
- }
-
- $GLOBALS['phpgw']->common->phpgw_exit ();
- }
-
- ###
- # Start Main Page
- ###
-
- $this->html_page_begin (lang('Users').' :: '.$GLOBALS['userinfo']['username']);
- $this->html_page_body_begin (HTML_PAGE_BODY_COLOR);
-
- if ($messages)
- {
- $this->bo->html_text ($messages);
- }
-
- if (!count ($GLOBALS['settings']))
- {
- $GLOBALS[pref] = CreateObject ('phpgwapi.preferences', $GLOBALS['userinfo']['username']);
- $GLOBALS[pref]->read_repository ();
- $GLOBALS['phpgw']->hooks->single ('add_def_pref', $GLOBALS['appname']);
- $GLOBALS[pref]->save_repository (True);
- $pref_array = $GLOBALS[pref]->read_repository ();
- $GLOBALS['settings'] = $pref_array[$GLOBALS['appname']];
- }
-
- ###
- # Start Main Table
- ###
-
- if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$edit && !$comment_files)
- {
- $this->html_table_begin ('100%');
- $this->html_table_row_begin ();
- $this->html_table_col_begin ('center', NULL, 'top');
- $this->html_align ('center');
- $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path);
- if ($numoffiles || $cwd)
- {
- while (list ($num, $name) = each ($GLOBALS['settings']))
+ # Verify path is real
+ if ($this->path != $GLOBALS['homedir'] && $this->path != '/' && $this->path != $GLOBALS['fakebase'])
{
- if ($name)
+ if (!$this->bo->vfs->file_exists (array (
+ 'string' => $this->path,
+ 'relatives' => array (RELATIVE_NONE)
+ )))
{
- $columns++;
+ $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 ();
}
}
- $columns++;
- $this->html_table_begin ();
- $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_HEADER_BG_COLOR);
- $this->html_table_col_begin ('center', NULL, NULL, NULL, $columns);
- $this->html_table_begin ('100%');
- $this->html_table_row_begin ();
- $this->html_table_col_begin ('left');
- if ($path != '/')
+ /* Update if they request it, or one out of 20 page loads */
+ srand ((double) microtime() * 1000000);
+ if ($update || rand (0, 19) == 4)
{
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$lesspath, $this->html_image ($this->imgroot.'images/folder-up.png', lang('Up'), 'left', 0, NULL, 1));
- $this->html_help_link ('up');
+ $this->bo->vfs->update_real (array (
+ 'string' => $this->path,
+ 'relatives' => array (RELATIVE_NONE)
+ ));
}
- $this->html_table_col_end ();
- $this->html_table_col_begin ('center');
-
- if ($cwd)
+ # 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),
+ 'operation' => PHPGW_ACL_ADD
+ )))
{
- if ($path == $GLOBALS['homedir'])
- {
- $this->html_image ($this->imgroot.'images/folder-home.png', lang('Folder'), 'center');
- }
- else
- {
- $this->html_image ($this->imgroot.'images/folder.png', lang('Folder'), 'center');
- }
+ $this->can_add = True;
+ }
+
+
+ # Default is to sort by name
+ if (!$this->sortby)
+ {
+ $this->sortby = 'name';
+ }
+
+ if($this->debug) $this->debug_filemanager();
+
+ # main action switch
+ // FIXME this will become a switch
+ if($this->newfile && $this->newfile_or_dir) // create new textfile
+ {
+ $this->createfile();
+ }
+ elseif($this->newfile_or_dir && $this->newdir)
+ {
+ $this->createdir();
+ }
+ elseif ($this->uploadprocess)
+ {
+ $this->fileUpload();
+ }
+ elseif ($this->upload || $this->show_upload_boxes)
+ {
+ $this->showUploadboxes();
+ }
+ elseif ($this->copy_to)
+ {
+ $this->copyTo();
+ }
+ elseif ($this->move_to)
+ {
+ $this->moveTo();
+ }
+ elseif ($this->download)
+ {
+ $this->download();
+ }
+ elseif ($this->renamefiles)
+ {
+ $this->rename();
+ }
+ elseif ($this->comment_files)
+ {
+ $this->editComment();
+ }
+ elseif ($this->edit_cancel)
+ {
+ $this->readFilesInfo();
+ $this->fileListing();
+ }
+ elseif ($this->edit || $this->edit_preview || $this->edit_save)
+ {
+ $this->edit();
+ }
+ elseif ($this->delete)
+ {
+ $this->delete();
}
else
{
- $this->html_image ($this->imgroot.'images/folder-home.png', lang('Home'));
+ $this->readFilesInfo();
+ $this->fileListing();
}
- $this->html_font_set (4, HTML_TABLE_FILES_HEADER_TEXT_COLOR);
- $this->html_text_bold ($disppath);
- $this->html_font_end ();
- $this->html_help_link ('directory_name');
- $this->html_table_col_end ();
- $this->html_table_col_begin ('right');
+ }
- if ($path != $GLOBALS['homedir'])
+ 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)
{
- $this->html_link ('/index.php'.'menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], $this->html_image ($this->imgroot.'images/folder-home.png', lang('Home'), 'right', 0, NULL, 1));
- $this->html_help_link ('home');
- }
-
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_table_end ();
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_COLUMN_HEADER_BG_COLOR);
-
- ###
- # Start File Table Column Headers
- # Reads values from $file_attributes array and preferences
- ###
-
- $this->html_table_col_begin ();
- $this->bo->html_text (lang('Sort by:') . $this->html_nbsp (1, 1), NULL, NULL, 0);
- $this->html_help_link ('sort_by');
- $this->html_table_col_end ();
-
- reset ($this->bo->file_attributes);
- while (list ($internal, $displayed) = each ($this->bo->file_attributes))
- {
- if ($GLOBALS['settings'][$internal])
+ while (list ($num, $name) = each ($this->prefs))
{
- $this->html_table_col_begin ();
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path.'&sortby='.$internal, $this->html_text_bold ($displayed, 1, 0));
- $this->html_help_link (strtolower (ereg_replace (' ', '_', $displayed)));
- $this->html_table_col_end ();
- }
- }
-
- $this->html_table_col_begin ();
- $this->html_table_col_end ();
- $this->html_table_row_end ();
-
- if ($GLOBALS['settings']['dotdot'] && $GLOBALS['settings']['name'] && $path != '/')
- {
- $this->html_table_row_begin ();
- $this->html_table_col_begin ();
- $this->html_table_col_end ();
-
- /* We can assume the next column is the name */
- $this->html_table_col_begin ();
- $this->html_image ($this->imgroot.'images/folder.png', lang('Folder'));
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$lesspath, '..');
- $this->html_table_col_end ();
-
- if ($GLOBALS['settings']['mime_type'])
- {
- $this->html_table_col_begin ();
- $this->bo->html_text (lang('Directory'));
- $this->html_table_col_end ();
- }
-
- $this->html_table_row_end ();
- }
-
- ###
- # List all of the files, with their attributes
- ###
-
- reset ($files_array);
- for ($i = 0; $i != $numoffiles; $i++)
- {
- $files = $files_array[$i];
-
- if ($rename || $edit_comments)
- {
- unset ($this_selected);
- unset ($renamethis);
- unset ($edit_this_comment);
-
- for ($j = 0; $j != $numoffiles; $j++)
+ if ($name)
{
- if ($fileman[$j] == $files['name'])
+ $columns++;
+ }
+ }
+ $columns++;
+
+ $vars[toolbar0]=$this->toolbar('location');
+ $vars[toolbar1]=$this->toolbar('list_nav');
+ $vars[messages]=$this->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'));
+
+ reset ($this->bo->file_attributes);
+
+ if($this->numoffiles>0)
+ {
+ while (list ($internal, $displayed) = each ($this->bo->file_attributes))
+ {
+ if ($this->prefs[$internal])
{
- $this_selected = 1;
- break;
+ $col_data=''.$displayed.'';
+ $this->t->set_var('col_data',$col_data);
+ $this->t->parse('columns','column',True);
}
}
- if ($rename && $this_selected)
- {
- $renamethis = 1;
- }
- elseif ($edit_comments && $this_selected)
- {
- $edit_this_comment = 1;
- }
- }
-
- if (!$GLOBALS['settings']['dotfiles'] && ereg ("^\.", $files['name']))
- {
- continue;
- }
-
- $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_BG_COLOR);
-
- ###
- # Checkboxes
- ###
-
- $this->html_table_col_begin ('right');
-
- if (!$rename && !$edit_comments && $path != $GLOBALS['fakebase'] && $path != '/')
- {
- $this->html_form_input ('checkbox', 'fileman['.$i.']', base64_encode ($files['name']));
- }
- elseif ($renamethis)
- {
- $this->html_form_input ('hidden', 'fileman[' . base64_encode ($files['name']) . ']', $files['name'], NULL, NULL, 'checked');
+ $this->t->set_var('row_tr_color','#cbcbcb');
+ $this->t->parse('rows','row');
+ $this->t->pparse('out','row');
}
else
{
- $this->html_nbsp();
+ $lang_nofiles=lang('No files in this directory.');
}
+ $vars[lang_no_files]=$lang_nofiles;
+
- $this->html_table_col_end ();
-
- ###
- # File name and icon
- ###
-
- if ($GLOBALS['settings']['name'])
+ if ($this->prefs['dotdot'] && $this->prefs['name'] && $this->path != '/')
{
- if ($phpwh_debug)
+ $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'])
{
- echo 'Setting file name: '.$files['name'].'
'."\n";
+ $col_data=lang('Directory');
+ $this->t->set_var('col_data',$col_data);
+ $this->t->parse('columns','column',True);
}
- $this->html_table_col_begin ();
+ $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->rename || $this->edit_comments)
+ {
+ unset ($this_selected);
+ unset ($renamethis);
+ unset ($edit_this_comment);
+
+ for ($j = 0; $j != $this->numoffiles; $j++)
+ {
+ if ($this->fileman[$j] == $files['name'])
+ {
+ $this_selected = 1;
+ break;
+ }
+ }
+
+ if ($this->rename && $this_selected)
+ {
+ $renamethis = 1;
+ }
+ elseif ($this->edit_comments && $this_selected)
+ {
+ $edit_this_comment = 1;
+ }
+ }
+
+ if (!$this->prefs['dotfiles'] && ereg ("^\.", $files['name']))
+ {
+ continue;
+ }
+
+ # Checkboxes
+ if (!$this->rename && !$this->edit_comments && $this->path != $GLOBALS['fakebase'] && $this->path != '/')
+ {
+ $cbox='';
+ $this->t->set_var('actions',$cbox);
+ }
+ elseif ($renamethis)
+ {
+ $cbox=$this->html_form_input ('hidden', 'fileman[' . base64_encode ($files['name']) . ']', $files['name'], NULL, NULL, 'checked');
+ $this->t->set_var('actions',$cbox);
+ }
+ else
+ {
+ $this->t->set_var('actions','');
+ }
+
+ # File name and icon
if ($renamethis)
{
- if ($files['mime_type'] == 'Directory')
- {
- $this->html_image ($this->imgroot.'images/folder.png', lang('Folder'));
- }
- $this->html_form_input ('text', 'renamefiles[' . base64_encode ($files['name']) . ']', $files['name'], 255);
+ $col_data=$this->mime_icon($files['mime_type']);
+ $col_data.='';
}
else
{
if ($files['mime_type'] == 'Directory')
{
- $this->html_image ($this->imgroot.'images/folder.png', lang('Folder'));
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path.$dispsep.$files['name'], $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']);
+
+ $col_data=''.$icon.' ';
+ $col_data.=''.$files['name'].' ';
}
else
{
- if ($GLOBALS['settings']['viewinnewwin'])
- {
- $target = '_new';
- }
- if ($GLOBALS['settings']['viewonserver'] && isset ($GLOBALS['filesdir']) && !$files['link_directory'])
+ if ($this->prefs['viewonserver'] && isset ($GLOBALS['filesdir']) && !$files['link_directory'])
{
#FIXME
$clickview = $GLOBALS['filesdir'].$pwd.'/'.$files['name'];
@@ -899,974 +587,1094 @@ else
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
{
- #FIXME??
- // $clickview = $GLOBALS['appname'].'/index.php?op=view&file='.$files['name'].'&path='.$path;
- $this->html_link ('index.php','menuaction=filemanager.uifilemanager.index&op=view&file='.$files['name'].'&path='.$path, $files['name'], 0, 1, 0, $target);
+ $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'].'';
}
-
-
- #FIXME
- //$this->html_link ($clickview, $files['name'], 0, 1, 0, $target);
}
}
- $this->html_table_col_end ();
+ $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)
+ );
+
+ $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'])
+ {
+ $col_data=$files['created'];
+ $this->t->set_var('col_data',$col_data);
+ $this->t->parse('columns','column',True);
+ }
+
+ # Date modified
+ if ($this->prefs['modified'])
+ {
+ 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'])
+ {
+ $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 ($edit_this_comment)
+ {
+ $col_data='' ;
+ }
+ else
+ {
+ $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);
+ }
+
+
+
+ if ($files['mime_type'] == 'Directory')
+ {
+ $usedspace += $fileinfo[0];
+ }
+ else
+ {
+ $usedspace += $files['size'];
+ }
+
+ $this->t->set_var('row_tr_color','');
+ $this->t->parse('rows','row');
+ $this->t->pparse('out','row');
}
- ###
- # MIME type
- ###
-
- if ($GLOBALS['settings']['mime_type'])
+ // when renaming or changing comments render extra sumbmit button
+ if ($this->rename || $this->edit_comments)
{
- $this->html_table_col_begin ();
- $this->bo->html_text ($files['mime_type']);
- $this->html_table_col_end ();
+ $col_data='
';
+ $this->t->set_var('col_data',$col_data);
+ $this->t->parse('columns','column');
+ $this->t->set_var('row_tr_color','');
+ $this->t->parse('rows','row');
+ $this->t->pparse('out','row');
}
- ###
- # File size
- ###
- if ($GLOBALS['settings']['size'])
- {
- $this->html_table_col_begin ();
+ }
- $size = $this->bo->vfs->get_size (array (
- 'string' => $files['directory'] . '/' . $files['name'],
- 'relatives' => array (RELATIVE_NONE)
- )
+
+
+ // The file and directory information
+ $vars[lang_files_in_this_dir]=lang('Files is 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 == $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);
+
+ $tmp_arr=array (
+ 'string' => $this->path,
+ 'relatives' => array (RELATIVE_NONE)
);
- $this->bo->borkb ($size);
+ $ls_array = $this->bo->vfs->ls ($tmp_arr);
+
+
+ $vars[lang_total_files]=lang('Total Files');
+ $vars[total_files]= count ($ls_array);
- $this->html_table_col_end ();
}
- ###
- # Date created
- ###
- if ($GLOBALS['settings']['created'])
- {
- $this->html_table_col_begin ();
- $this->bo->html_text ($files['created']);
- $this->html_table_col_end ();
- }
+ $this->t->set_var($vars);
+ $this->t->pparse('out','filemanager_footer');
- ###
- # Date modified
- ###
+ $GLOBALS['phpgw']->common->phpgw_footer ();
+ $GLOBALS['phpgw']->common->phpgw_exit ();
- if ($GLOBALS['settings']['modified'])
+ }
+
+ 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 == $GLOBALS['fakebase'])
{
- $this->html_table_col_begin ();
- if ($files['modified'] != '0000-00-00')
+ if (!$this->bo->vfs->file_exists (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE))))
{
- $this->bo->html_text ($files['modified']);
+ $this->bo->vfs->mkdir (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE)));
}
- $this->html_table_col_end ();
- }
- ###
- # Owner name
- ###
+ $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++;
- if ($GLOBALS['settings']['owner'])
- {
- $this->html_table_col_begin ();
- $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['owner_id']));
- $this->html_table_col_end ();
- }
-
- ###
- # Creator name
- ###
-
- if ($GLOBALS['settings']['createdby_id'])
- {
- $this->html_table_col_begin ();
- if ($files['createdby_id'])
+ reset ($this->readable_groups);
+ while (list ($num, $group_array) = each ($this->readable_groups))
{
- $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['createdby_id']));
+ # If the group doesn't have access to this app, we don't show it
+ if (!$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) )) )
+ {
+ $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->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'] ) ) );
+ }
+
+ $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];
+
+ $this->numoffiles++;
}
- $this->html_table_col_end ();
- }
-
- ###
- # Modified by name
- ###
-
- if ($GLOBALS['settings']['modifiedby_id'])
- {
- $this->html_table_col_begin ();
- if ($files['modifiedby_id'])
- {
- $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['modifiedby_id']));
- }
- $this->html_table_col_end ();
- }
-
- ###
- # Application
- ###
-
- if ($GLOBALS['settings']['app'])
- {
- $this->html_table_col_begin ();
- $this->bo->html_text ($files['app']);
- $this->html_table_col_end ();
- }
-
- ###
- # Comment
- ###
-
- if ($GLOBALS['settings']['comment'])
- {
- $this->html_table_col_begin ();
- if ($edit_this_comment)
- {
- $this->html_form_input ('text', 'comment_files[' . base64_encode ($files['name']) . ']', $this->bo->html_encode ($files['comment'], 1), 255);
- }
- else
- {
- $this->bo->html_text ($files['comment']);
- }
- $this->html_table_col_end ();
- }
-
- ###
- # Version
- ###
-
- if ($GLOBALS['settings']['version'])
- {
- $this->html_table_col_begin ();
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&op=history&file='.$files['name'].'&path='.$path, $files['version'], NULL, True, NULL, '_new');
- $this->html_table_col_end ();
- }
-
- ###
- # Deleteable (currently not used)
- ###
-
- if ($GLOBALS['settings']['deleteable'])
- {
- if ($files['deleteable'] == 'N')
- {
- $this->html_table_col_begin ();
- $this->html_image ($this->imgroot.'images/locked.png', lang('Locked'));
- $this->html_table_col_end ();
- }
- else
- {
- $this->html_table_col_begin ();
- $this->html_table_col_end ();
- }
- }
-
- $this->html_table_row_end ();
-
- if ($files['mime_type'] == 'Directory')
- {
- $usedspace += $fileinfo[0];
}
else
{
- $usedspace += $files['size'];
+ $ls_array = $this->bo->vfs->ls (array ( 'string' => $this->path, 'relatives' => array (RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => False, 'orderby' => $this->sortby ) );
+
+ if ($phpwh_debug)
+ {
+ echo '# of files found in "'.$this->path.'" : '.count($ls_array).'
'."\n";
+ }
+
+ while (list ($num, $file_array) = each ($ls_array))
+ {
+ $this->numoffiles++;
+ $this->files_array[] = $file_array;
+ if ($phpwh_debug)
+ {
+ echo 'Filename: '.$file_array['name'].'
'."\n";
+ }
+ }
}
+
+ if (!is_array ($this->files_array))
+ {
+ $this->files_array = array ();
+ }
+ // end file count
}
-
- $this->html_table_end ();
- $this->html_break (2);
-
- if ($path != '/' && $path != $GLOBALS['fakebase'])
+ function toolbar($type)
{
- if (!$rename && !$edit_comments)
+ switch($type)
{
- $this->html_form_input ('submit', 'edit', lang('Edit'));
- $this->html_help_link ('edit');
- $this->html_nbsp (3);
- }
+ case 'location':
+ $toolbar='
+
+
';
+ break;
+ default:$x='';
}
- ###
- # Show file upload boxes. Note the last argument to html (). Repeats $show_upload_boxes times
- ###
- if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add)
- {
- $this->html_break (2);
- $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&op=upload&path='.$path, 'post', 'multipart/form-data');
- $this->html_table_begin ();
- $this->html_table_row_begin ('center');
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('File'));
- $this->html_help_link ('upload_file');
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->html_text_bold (lang('Comment'));
- $this->html_help_link ('upload_comment');
- $this->html_table_col_end ();
- $this->html_table_row_end ();
-
- $this->html_table_row_begin ();
- $this->html_table_col_begin ();
- $this->html_form_input ('hidden', 'show_upload_boxes', base64_encode ($show_upload_boxes));
- $this->html ($this->html_form_input ('file', 'upload_file[]', NULL, 255, NULL, NULL, NULL, 1) . $this->html_break (1, NULL, 1), $show_upload_boxes);
- $this->html_table_col_end ();
- $this->html_table_col_begin ();
- $this->html ($this->html_form_input ('text', 'upload_comment[]', NULL, NULL, NULL, NULL, NULL, 1) . $this->html_break (1, NULL, 1), $show_upload_boxes);
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_table_end ();
- $this->html_form_input ('submit', 'upload_files', lang('Upload files'));
- $this->html_help_link ('upload_files');
- $this->html_break (2);
- $this->bo->html_text (lang('Show') . $this->html_nbsp (1, True));
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=5', '5');
- $this->html_nbsp ();
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=10', '10');
- $this->html_nbsp ();
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=20', '20');
- $this->html_nbsp ();
- $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=50', '50');
- $this->html_nbsp ();
- $this->bo->html_text (lang('upload fields'));
- $this->html_nbsp ();
- $this->html_help_link ('show_upload_fields');
- $this->html_form_end ();
- }
+ if($toolbar)
+ {
+ return $toolbar;
}
-
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_table_end ();
- $this->html_page_close ();
}
+
- ###
- # Handle Editing files
- ###
-
- if ($edit)
+ // move to bo
+ # Handle File Uploads
+ function fileUpload()
{
- ###
- # If $edit is "Edit", we do nothing, and let the for loop take over
- ###
-
- if ($edit_file)
+ if ($this->path != '/' && $this->path != $GLOBALS['fakebase'])
{
- $edit_file_content = stripslashes ($edit_file_content);
- }
-
- if ($edit_preview)
- {
- $content = $edit_file_content;
-
- $this->html_break (1);
- $this->html_text_bold (lang('Preview of %1', $path.'/'.$edit_file));
- $this->html_break (2);
-
- $this->html_table_begin ('90%');
- $this->html_table_row_begin ();
- $this->html_table_col_begin ();
- $this->bo->html_text (nl2br ($content));
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_table_end ();
- }
- elseif ($edit_save)
- {
- $content = $edit_file_content;
-
- if ($this->bo->vfs->write (array (
- 'string' => $edit_file,
- 'relatives' => array (RELATIVE_ALL),
- 'content' => $content
- ))
- )
- {
- $this->html_text_bold (lang('Saved %1', $path.'/'.$edit_file));
- $this->html_break (2);
- $this->html_link_back ();
- }
- else
- {
- $this->html_text_error (lang('Could not save %1', $path.'/'.$edit_file));
- $this->html_break (2);
- $this->html_link_back ();
- }
- }
-
- /* This doesn't work just yet
- elseif ($edit_save_all)
- {
- for ($j = 0; $j != $numoffiles; $j++)
- {
- $fileman[$j];
-
- $content = $fileman[$j];
- echo 'fileman['.$j.']: '.$fileman[$j].'
+ ';
- if (!$edit_comments)
- {
- $this->html_form_input ('submit', 'rename', lang('Rename'));
- $this->html_help_link ('rename');
- $this->html_nbsp (3);
- }
-
- if (!$rename && !$edit_comments)
- {
- $this->html_form_input ('submit', 'delete', lang('Delete'));
- $this->html_help_link ('delete');
- $this->html_nbsp (3);
- }
-
- if (!$rename)
- {
- $this->html_form_input ('submit', 'edit_comments', lang('Edit comments'));
- $this->html_help_link ('edit_comments');
- }
- }
- }
-
- ###
- # Display some inputs and info, but not when renaming or editing comments
- ###
-
- if (!$rename && !$edit_comments)
- {
- ###
- # Begin Copy to/Move to selection
- ###
-
- $this->html_break (1);
- $this->html_form_input ('submit', 'go', lang('Go to:'));
- $this->html_help_link ('go_to');
-
- if ($path != '/' && $path != $GLOBALS['fakebase'])
- {
- $this->html_form_input ('submit', 'copy', lang('Copy to:'));
- $this->html_help_link ('copy_to');
- $this->html_form_input ('submit', 'move', lang('Move to:'));
- $this->html_help_link ('move_to');
- }
-
- $this->html_form_select_begin ('todir');
-
- $this->html_break (1);
-
- ###
- # First we get the directories in their home directory
- ###
-
- $dirs = array ();
- $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']);
-
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $GLOBALS['homedir'],
- 'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => True,
- 'mime_type' => 'Directory'
- )
- );
-
- while (list ($num, $dir) = each ($ls_array))
- {
- $dirs[] = $dir;
- }
-
-
- ###
- # Then we get the directories in their readable groups' home directories
- ###
-
- reset ($readable_groups);
- while (list ($num, $group_array) = each ($readable_groups))
- {
- ###
- # Don't list directories for groups that don't have access
- ###
-
- if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled'])
- {
- continue;
- }
-
- $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']);
-
- // FIXME?? (pim)
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'],
- 'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => True,
- 'mime_type' => 'Directory'
- )
- );
- 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']) != $path)
- && $this->bo->vfs->file_exists (array (
- 'string' => $dir['directory'] . $dir['name'],
- 'relatives' => array (RELATIVE_NONE)
- ))
-)
-{
- $this->html_form_option ($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']);
-}
+ // go up icon when we're not at the top
+ if ($this->path != '/')
+ {
+ $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->lesspath);
+ $toolbar.=$this->buttonImage($link,'up',lang('go up'));
}
- $this->html_form_select_end ();
- $this->html_help_link ('directory_list');
-
- if ($path != '/' && $path != $GLOBALS['fakebase'])
+ // go home icon when we're not home already
+ if ($this->path == $GLOBALS['homedir'])
{
- $this->html_break (1);
+ $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$GLOBALS['homedir']);
+ $toolbar.=$this->buttonImage($link,'home',lang('go home'));
+ }
- $this->html_form_input ('submit', 'download', lang('Download'));
- $this->html_help_link ('download');
- $this->html_nbsp (3);
+ // reload button with this url
+ $link=$this->encode_href('/index.php','menuaction=filemanager.uifilemanager.index','path='.$this->path);
+ $toolbar.=$this->buttonImage($link,'reload',lang('reload'));
- if ($can_add)
+ // selectbox for change/move/and copy to
+ $dirs_options=$this->all_other_directories_options();
+ $toolbar.=' ';
+
+ $toolbar.=$this->inputImage('goto','goto','Quick jump to');
+
+ if (!$this->rename && !$this->edit_comments)
+ {
+ // copy and move buttons
+ if ($this->path != '/' && $this->path != $GLOBALS['fakebase'])
{
- $this->html_form_input ('text', 'createdir', NULL, 255, 15);
- $this->html_form_input ('submit', 'newdir', lang('Create Folder'));
- $this->html_help_link ('create_folder');
+ $toolbar.=$this->inputImage('copy_to','copy_to',lang('Copy to'));
+ $toolbar.=$this->inputImage('move_to','move_to',lang('Move to'));
}
+
+
+ // submit buttons for
+ if ($this->path != '/' && $this->path != $GLOBALS['fakebase'])
+ {
+ if (!$this->rename && !$this->edit_comments)
+ {
+ // edit text file button
+ $toolbar.=$this->inputImage('edit','edit',lang('edit'));
+ }
+
+ if (!$this->edit_comments)
+ {
+ $toolbar.=$this->inputImage('rename','rename',lang('Rename'));
+ }
+
+ if (!$this->rename && !$this->edit_comments)
+ {
+ $toolbar.=$this->inputImage('delete','delete',lang('Delete'));
+ }
+
+ if (!$this->rename)
+ {
+ $toolbar.=$this->inputImage('edit_comments','edit_comments',lang('Edit comments'));
+ }
+ }
+
+ // create dir and file button
+ if ($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add)
+ {
+ $toolbar.=' ';
+ $toolbar.=$this->inputImage('newdir','createdir',lang('Create Folder'));
+ $toolbar.=$this->inputImage('newfile','createfile',lang('Create File'));
+ }
+
+ $toolbar.=' ';
+
+ // download button
+ if ($this->path != '/' && $this->path != $GLOBALS['fakebase'] && $this->can_add)
+ {
+ $toolbar.=$this->inputImage('download','download',lang('Download'));
+ }
+ // upload button
+ $toolbar.=$this->inputImage('upload','upload',lang('Upload'));
+
}
-
- $this->html_break (1);
- $this->html_form_input ('submit', 'update', lang('Update'));
- $this->html_help_link ('update');
-
- if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add)
- {
- $this->html_nbsp (3);
- $this->html_form_input ('text', 'createfile', NULL, 255, 15);
- $this->html_form_input ('submit', 'newfile', lang('Create File'));
- $this->html_help_link ('create_file');
- }
-
- if ($GLOBALS['settings']['show_command_line'])
- {
- $this->html_break (2);
- $this->html_form_input ('text', 'command_line', NULL, NULL, 50);
- $this->html_help_link ('command_line');
-
- $this->html_break (1);
- $this->html_form_input ('submit', 'execute', lang('Execute'));
- $this->html_help_link ('execute');
- }
-
- $this->html_form_end ();
-
- $this->html_help_link ('file_stats');
- $this->html_break (1);
- $this->html_text_bold (lang('Files').': ');
- $this->bo->html_text ($numoffiles);
- $this->html_nbsp (3);
-
- $this->html_text_bold (lang('Used space').': ');
- $this->bo->html_text ($this->bo->borkb ($usedspace, NULL, 1));
- $this->html_nbsp (3);
-
- if ($path == $GLOBALS['homedir'] || $path == $GLOBALS['fakebase'])
- {
- $this->html_text_bold (lang('Unused space').': ');
- $this->bo->html_text ($this->bo->borkb ($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1));
-
- $ls_array = $this->bo->vfs->ls (array (
- 'string' => $path,
- 'relatives' => array (RELATIVE_NONE)
- )
- );
-
- $i = count ($ls_array);
-
- $this->html_break (2);
- $this->html_text_bold (lang('Total Files').': ');
- $this->bo->html_text ($i);
+
+ $toolbar.='
'.$content.'
';
- continue;
-
- if ($this->bo->vfs->write (array (
- 'string' => $fileman[$j],
- 'relatives' => array (RELATIVE_ALL),
- 'content' => $content
- ))
- )
- {
- $this->html_text_bold (lang('Saved %1', $path.'/'.$fileman[$j]));
- $this->html_break (1);
- }
- else
- {
- $this->html_text_error (lang('Could not save %1', $path.'/'.$fileman[$j]));
- $this->html_break (1);
- }
- }
-
- $this->html_break (1);
- }
- */
-
- ###
- # Now we display the edit boxes and forms
- ###
-
- for ($j = 0; $j != $numoffiles; $j++)
- {
- ###
- # If we're in preview or save mode, we only show the file
- # being previewed or saved
- ###
-
- if ($edit_file && ($fileman[$j] != $edit_file))
- {
- continue;
- }
-
- if ($fileman[$j] && $this->bo->vfs->file_exists (array (
- 'string' => $fileman[$j],
- 'relatives' => array (RELATIVE_ALL)
- ))
- )
- {
- if ($edit_file)
- {
- $content = stripslashes ($edit_file_content);
- }
- else
- {
- $content = $this->bo->vfs->read (array ('string' => $fileman[$j]));
- }
-
- $this->html_table_begin ('100%');
- $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path);
- $this->html_form_input ('hidden', 'edit', True);
- $this->html_form_input ('hidden', 'edit_file', $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 != $numoffiles; $i++)
- {
- $this->html_form_input ('hidden', 'fileman['.$i.']', base64_encode ($fileman[$i]));
- }
-
- $this->html_table_row_begin ();
- $this->html_table_col_begin ();
- $this->html_form_textarea ('edit_file_content', 35, 75, $content);
- $this->html_table_col_end ();
- $this->html_table_col_begin ('center');
- $this->html_form_input ('submit', 'edit_preview', lang('Preview %1', $this->bo->html_encode ($fileman[$j], 1)));
- $this->html_break (1);
- $this->html_form_input ('submit', 'edit_save', lang('Save %1', $this->bo->html_encode ($fileman[$j], 1)));
- // $this->html_break (1);
- // $this->html_form_input ('submit', 'edit_save_all', lang('Save all'));
- $this->html_table_col_end ();
- $this->html_table_row_end ();
- $this->html_break (2);
- $this->html_form_end ();
- $this->html_table_end ();
- }
-}
- }
-
- ###
- # Handle File Uploads
- ###
-
- elseif ($op == 'upload' && $path != '/' && $path != $GLOBALS['fakebase'])
- {
- for ($i = 0; $i != $show_upload_boxes; $i++)
+ for ($i = 0; $i != $this->show_upload_boxes; $i++)
{
if ($badchar = $this->bo->bad_chars ($_FILES['upload_file']['name'][$i], True, True))
{
- echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names 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;
}
- ###
# 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' => $path . '/' . $_FILES['upload_file']['name'][$i],
+ 'string'=> $this->path . '/' . $_FILES['upload_file']['name'][$i],
'relatives' => array (RELATIVE_NONE),
- 'checksubdirs' => False,
- 'nofiles' => True
- )
- );
+ '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();
+ }
+
+ }
+
+ # Handle Editing comments
+ function editComment()
+ {
+ while (list ($file) = each ($this->comment_files))
+ {
+ if ($badchar = $this->bo->bad_chars ($this->comment_files[$file], False, True))
+ {
+ $this->messages=$GLOBALS['phpgw']->common->error_list (array ($file . $this->bo->html_encode (': ' . lang('Comments 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 && $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,
+ 'nofiles' => True
+ ));
$fileinfo = $ls_array[0];
if ($fileinfo['name'])
{
- if ($fileinfo['mime_type'] == 'Directory')
+ if ($fileinfo['mime_type'] != 'Directory')
{
- echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot replace %1 because it is a directory', $fileinfo['name'])));
- continue;
+ $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('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)));
}
}
- if ($_FILES['upload_file']['size'][$i] > 0)
- {
- if ($fileinfo['name'] && $fileinfo['deleteable'] != 'N')
- {
- $this->bo->vfs->set_attributes (array (
- 'string' => $_FILES['upload_file']['name'][$i],
- 'relatives' => array (RELATIVE_ALL),
- 'attributes' => array (
- 'owner_id' => $GLOBALS['userinfo']['username'],
- 'modifiedby_id' => $GLOBALS['userinfo']['username'],
- 'modified' => $now,
- 'size' => $_FILES['upload_file']['size'][$i],
- 'mime_type' => $_FILES['upload_file']['type'][$i],
- 'deleteable' => 'Y',
- 'comment' => stripslashes ($upload_comment[$i])
- )
- )
- );
-
- $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->html_text_summary(lang('Replaced %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$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->html_text_summary(lang('Created %1', $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->html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $file_size[$i]);
- }
- }
-
- $this->html_break (2);
- $this->html_link_back ();
+ $this->readFilesInfo();
+ $this->filelisting();
}
- ###
- # Handle Editing comments
- ###
-
- elseif ($comment_files)
- {
- while (list ($file) = each ($comment_files))
- {
- if ($badchar = $this->bo->bad_chars ($comment_files[$file], False, True))
- {
- echo $GLOBALS['phpgw']->common->error_list (array ($this->html_text_italic ($file, 1) . $this->bo->html_encode (': ' . lang('Comments cannot contain "%1"', $badchar), 1)));
- continue;
- }
-
- $this->bo->vfs->set_attributes (array (
- 'string' => $file,
- 'relatives' => array (RELATIVE_ALL),
- 'attributes' => array (
- 'comment' => stripslashes ($comment_files[$file])
- )
- )
- );
-
- $this->html_text_summary (lang('Updated comment for %1', $path.'/'.$file));
- }
-
- $this->html_break (2);
- $this->html_link_back ();
}
- ###
- # Handle Renaming Files and Directories
- ###
-
- elseif ($renamefiles)
+ function delete()
{
- while (list ($from, $to) = each ($renamefiles))
+ for ($i = 0; $i != $this->numoffiles; $i++)
{
- if ($badchar = $this->bo->bad_chars ($to, True, True))
+ if ($this->fileman[$i])
{
- echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"', $badchar), 1)));
- continue;
+ if ($this->bo->vfs->delete (array ('string' => $this->fileman[$i])))
+ {
+ $this->messages .= lang('Deleted %1', $this->disppath.'/'.$this->fileman[$i]).'
';
+ }
+ else
+ {
+ $this->messages=$GLOBALS['phpgw']->common->error_list (array (lang('Could not delete %1', $this->disppath.'/'.$this->fileman[$i])));
+ }
+ }
+ }
+ $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}
+
+ 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 '
';
- break;
- case 2:
- $break_str = '
';
- break;
- }
- return ($this->bo->eor ($break_str . $string, $return));
- }
-
- function html_page_begin ($title = NULL, $return = 0)
- {
- // $rstring = HTML_PAGE_BEGIN_BEFORE_TITLE . $title . HTML_PAGE_BEGIN_AFTER_TITLE;
- return ($this->bo->eor ($rstring, $return));
- }
-
- function html_page_body_begin ($bgcolor = HTML_PAGE_BODY_COLOR, $background = NULL, $text = NULL, $link = NULL, $vlink = NULL, $alink = NULL, $string = HTML_PAGE_BODY_STRING, $return = 0)
- {
- $text_out = ' ';
- if ($bgcolor != NULL && $bgcolor)
- {
- $text_out .= 'bgcolor="'.$bgcolor.'" ';
- }
- if ($background != NULL && $background)
- {
- $text_out .= 'background="'.$background.'" ';
- }
- if ($text != NULL && $text)
- {
- $text_out .= 'text="'.$text.'" ';
- }
- if ($link != NULL && $link)
- {
- $text_out .= 'link="'.$link.'" ';
- }
- if ($vlink != NULL && $vlink)
- {
- $text_out .= 'vlink="'.$vlink.'" ';
- }
- if ($alink != NULL && $alink)
- {
- $text_out .= 'alink="'.$alink.'" ';
- }
- // $rstring = '';
- return ($this->bo->eor ($rstring, $return));
- }
-
- function html_page_body_end ($return = 0)
- {
- // $rstring = '';
- return ($this->bo->eor ($rstring, $return));
- }
-
- function html_page_end ($return = 0)
- {
- // $rstring = '