array ('op' => ''), 'path' => array ('path' => ''), 'file' => array ('file' => ''), 'sortby' => array ('sortby' => ''), 'fileman' => array ('fileman' => ''), 'messages' => array ('messages' => ''), 'help_name' => array ('help_name' => ''), 'renamefiles' => array ('renamefiles' => ''), 'comment_files' => array ('comment_files' => ''), 'show_upload_boxes' => array ('show_upload_boxes' => '') ); reset ($to_decode); while (list ($var, $conditions) = each ($to_decode)) { while (list ($condvar, $condvalue) = each ($conditions)) { if (isset ($$condvar) && ($condvar == $var || $$condvar == $condvalue)) { if (is_array ($$var)) { $temp = array (); while (list ($varkey, $varvalue) = each ($$var)) { if (is_int ($varkey)) { $temp[$varkey] = stripslashes (base64_decode ($varvalue)); } else { $temp[stripslashes (base64_decode ($varkey))] = $varvalue; } } $$var = $temp; } elseif (isset ($$var)) { $$var = stripslashes (base64_decode ($$var)); } } } } if ($noheader || $nofooter || ($download && (count ($fileman) > 0)) || ($op == "view" && $file) || ($op == "history" && $file) || ($op == help && $help_name)) { $noheader = True; $nofooter = True; } $phpgw_info["flags"] = array ( "currentapp" => "phpwebhosting", "noheader" => $noheader, "nofooter" => $nofooter, "noappheader" => False, "enable_vfs_class" => True, "enable_browser_class" => True ); include ("../header.inc.php"); if ($execute && $command_line) { if ($result = $phpgw->vfs->command_line (stripslashes ($command_line))) { $messages = html_text_bold ("Command sucessfully run", 1); if ($result != 1 && strlen ($result) > 0) { $messages .= html_break (2, NULL, 1) . $result; } } else { $messages = $phpgw->common->error_list (array ("Error running command")); } } ### # Page to process users # Code is fairly hackish at the beginning, but it gets better # Highly suggest turning wrapping off due to long SQL queries ### ### # Some hacks to set and display directory paths correctly ### if ($go) { $path = $todir; } if (!$path) { $path = $phpgw->vfs->pwd (); if (!$path || $phpgw->vfs->pwd (False) == "") { $path = $homedir; } } $phpgw->vfs->cd (False, False, array (RELATIVE_NONE)); $phpgw->vfs->cd ($path, False, array (RELATIVE_NONE)); $pwd = $phpgw->vfs->pwd (); if (!$cwd = substr ($path, strlen ($homedir) + 1)) { $cwd = "/"; } else { $cwd = substr ($pwd, strrpos ($pwd, "/") + 1); } $disppath = $path; /* This just prevents // in some cases */ if ($path == "/") $dispsep = ""; else $dispsep = "/"; if (!($lesspath = substr ($path, 0, strrpos ($path, "/")))) $lesspath = "/"; $now = date ("Y-m-d"); if ($phpwh_debug) { echo "PHPWebHosting debug:
path: $path
disppath: $disppath
cwd: $cwd
lesspath: $lesspath

phpGW debug:
real getabsolutepath: " . $phpgw->vfs->getabsolutepath (False, False, False) . "
fake getabsolutepath: " . $phpgw->vfs->getabsolutepath (False) . "
appsession: " . $phpgw->common->appsession () . "
pwd: " . $phpgw->vfs->pwd () . "
"; } ### # Get their memberships to be used throughout the script ### $memberships = $phpgw->accounts->membership ($userinfo["username"]); if (!is_array ($memberships)) { $memberships = array (); } while (list ($num, $group_array) = each ($memberships)) { $membership_id = $phpgw->accounts->name2id ($group_array["account_name"]); $group_applications = CreateObject('phpgwapi.applications', $membership_id); $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 ("+^$fakebase\/(.*)(\/|$)+U", $path, $matches)) && $matches[1] != $userinfo["account_lid"]) { $phpgw->vfs->working_id = $phpgw->accounts->name2id ($matches[1]); } else { $phpgw->vfs->working_id = $userinfo["username"]; } if ($path != $homedir && $path != $fakebase && $path != "/" && !$phpgw->vfs->acl_check ($path, array (RELATIVE_NONE), PHPGW_ACL_READ)) { echo $phpgw->common->error_list (array ("You do not have access to $path")); html_break (2); html_link ("$appname/index.php?path=$homedir", "Go to your home directory"); html_page_close (); } $userinfo["working_id"] = $phpgw->vfs->working_id; $userinfo["working_lid"] = $phpgw->accounts->id2name ($userinfo["working_id"]); ### # If their home directory doesn't exist, we create it # Same for group directories ### if (($path == $homedir) && !$phpgw->vfs->file_exists ($homedir, array (RELATIVE_NONE))) { $phpgw->vfs->override_acl = 1; $phpgw->vfs->mkdir ($homedir, array (RELATIVE_NONE)); $phpgw->vfs->override_acl = 0; } elseif (preg_match ("|^$fakebase\/(.*)$|U", $path, $matches)) { if (!$phpgw->vfs->file_exists ($path, array (RELATIVE_NONE))) { $phpgw->vfs->override_acl = 1; $phpgw->vfs->mkdir ($path, array (RELATIVE_NONE)); $phpgw->vfs->override_acl = 0; $group_id = $phpgw->accounts->name2id ($matches[1]); $phpgw->vfs->set_attributes ($path, array (RELATIVE_NONE), array ("owner_id" => $group_id, "createdby_id" => $group_id)); } } ### # Verify path is real ### if ($path != $homedir && $path != "/" && $path != $fakebase) { if (!$phpgw->vfs->file_exists ($path, array (RELATIVE_NONE))) { echo $phpgw->common->error_list (array ("Directory $path does not exist")); html_break (2); html_link ("$appname/index.php?path=$homedir", "Go to your home directory"); html_break (2); html_link_back (); 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) { $phpgw->vfs->update_real ($path, array (RELATIVE_NONE)); } ### # Default is to sort by name ### if (!$sortby) { $sortby = "name"; } ### # Decide how many upload boxes to show ### if (!$show_upload_boxes || $show_upload_boxes <= 0) { if (!$show_upload_boxes = $settings["show_upload_boxes"]) { $show_upload_boxes = 5; } } ### # 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 ($path == $fakebase) { if (!$phpgw->vfs->file_exists ($homedir, array (RELATIVE_NONE))) { $phpgw->vfs->mkdir ($homedir, array (RELATIVE_NONE)); } $ls_array = $phpgw->vfs->ls ($homedir, array (RELATIVE_NONE), False, False, True); $files_array[] = $ls_array[0]; $numoffiles++; reset ($memberships); while (list ($num, $group_array) = each ($memberships)) { ### # If the group doesn't have access to this app, we don't show it ### if (!$membership_applications[$group_array["account_name"]][$appname]["enabled"]) { continue; } if (!$phpgw->vfs->file_exists ("$fakebase/$group_array[account_name]", array (RELATIVE_NONE))) { $phpgw->vfs->mkdir ("$fakebase/$group_array[account_name]", array (RELATIVE_NONE)); $phpgw->vfs->set_attributes ("$fakebase/$group_array[account_name]", array (RELATIVE_NONE), array ("owner_id" => $group_array["account_id"], "createdby_id" => $group_array["account_id"])); } $ls_array = $phpgw->vfs->ls ("$fakebase/$group_array[account_name]", array (RELATIVE_NONE), False, False, True); $files_array[] = $ls_array[0]; $numoffiles++; } } else { $ls_array = $phpgw->vfs->ls ($path, array (RELATIVE_NONE), False, False, False, $sortby); while (list ($num, $file_array) = each ($ls_array)) { $numoffiles++; $files_array[] = $file_array; } } 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 $phpgw->vfs->read ($fileman[$i]); $phpgw->common->phpgw_exit (); } } if ($op == "view" && $file) { $ls_array = $phpgw->vfs->ls ($file, array (RELATIVE_ALL), False, False, True); if ($ls_array[0]["mime_type"]) { $mime_type = $ls_array[0]["mime_type"]; } elseif ($settings["viewtextplain"]) { $mime_type = "text/plain"; } header('Content-type: ' . $mime_type); echo $phpgw->vfs->read ($file); $phpgw->common->phpgw_exit (); } if ($op == "history" && $file) { html_table_begin (); html_table_row_begin (); html_table_col_begin (); html_text_bold ("Date"); html_table_col_end (); html_table_col_begin (); html_text_bold ("Version"); html_table_col_end (); html_table_col_begin (); html_text_bold ("Who"); html_table_col_end (); html_table_col_begin (); html_text_bold ("Operation"); html_table_col_end (); html_table_row_end (); $journal_array = $phpgw->vfs->get_journal ($file, array (RELATIVE_ALL)); while (list ($num, $journal_entry) = each ($journal_array)) { html_table_row_begin (); html_table_col_begin (); html_text ($journal_entry["created"] . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); html_text ($journal_entry["version"] . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); html_text ($phpgw->accounts->id2name ($journal_entry["owner_id"]) . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); html_text ($journal_entry["comment"]); html_table_col_end (); } html_table_end (); html_page_close (); } if ($newfile && $createfile) { if ($badchar = bad_chars ($createfile, True, True)) { echo $phpgw->common->error_list (array (html_encode ("Filenames cannot contain \"$badchar\"", 1))); html_break (2); html_link_back (); html_page_close (); } if ($phpgw->vfs->file_exists ($createfile, array (RELATIVE_ALL))) { echo $phpgw->common->error_list (array ("File $createfile already exists. Please edit it or delete it first.")); html_break (2); html_link_back (); html_page_close (); } if ($phpgw->vfs->touch ($createfile, array (RELATIVE_ALL))) { $fileman = array (); $fileman[0] = $createfile; $edit = 1; } else { echo $phpgw->common->error_list (array ("File $createfile could not be created.")); } } 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]); html_font_set ("4"); $title = ereg_replace ("_", " ", $help_array[0]); $title = ucwords ($title); html_text ($title); html_font_end (); html_break (2); html_font_set ("2"); html_text ($help_array[1]); html_font_end (); } $phpgw->common->phpgw_exit (); } ### # Start Main Page ### html_page_begin ("Users :: $userinfo[username]"); html_page_body_begin (HTML_PAGE_BODY_COLOR); if ($messages) { html_text ($messages); } if (!is_array ($settings)) { $pref = CreateObject ('phpgwapi.preferences', $userinfo["username"]); $phpgw->common->hook_single ('add_def_pref', $appname); $pref->save_repository (True); $pref_array = $pref->read_repository (); $settings = $pref_array[$appname]; } ### # Start Main Table ### if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$edit && !$comment_files) { html_table_begin ("100%"); html_table_row_begin (); html_table_col_begin ("center", NULL, "top"); html_align ("center"); html_form_begin ("$appname/index.php?path=$path"); if ($numoffiles || $cwd) { while (list ($num, $name) = each ($settings)) { if ($name) { $columns++; } } $columns++; html_table_begin (); html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_HEADER_BG_COLOR); html_table_col_begin ("center", NULL, NULL, NULL, $columns); html_table_begin ("100%"); html_table_row_begin (); html_table_col_begin ("left"); if ($path != "/") { html_link ("$appname/index.php?path=$lesspath", html_image ("images/folder-up.gif", "Up", "left", 0, NULL, 1)); html_help_link ("up"); } html_table_col_end (); html_table_col_begin ("center"); if ($cwd) { if ($path == $homedir) { html_image ("images/folder-home.gif", "Folder", "center"); } else { html_image ("images/folder.gif", "Folder", "center"); } } else { html_image ("images/folder-home.gif", "Home"); } html_font_set (4, HTML_TABLE_FILES_HEADER_TEXT_COLOR); html_text_bold (strtoupper ($disppath)); html_font_end (); html_help_link ("directory_name"); html_table_col_end (); html_table_col_begin ("right"); if ($path != $homedir) { html_link ("$appname/index.php?path=$homedir", html_image ("images/folder-home.gif", "Home", "right", 0, NULL, 1)); html_help_link ("home"); } html_table_col_end (); html_table_row_end (); html_table_end (); html_table_col_end (); html_table_row_end (); 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 ### html_table_col_begin (); html_text ("Sort by:" . html_nbsp (1, 1), NULL, NULL, 1); html_help_link ("sort_by"); html_table_col_end (); reset ($file_attributes); while (list ($internal, $displayed) = each ($file_attributes)) { if ($settings[$internal]) { html_table_col_begin (); html_link ("$appname/index.php?path=$path&sortby=$internal", html_text_bold ("$displayed", 1, 1)); html_help_link (strtolower (ereg_replace (" ", "_", $displayed))); html_table_col_end (); } } html_table_col_begin (); html_table_col_end (); html_table_row_end (); if ($settings["dotdot"] && $settings["name"] && $path != "/") { html_table_row_begin (); html_table_col_begin (); html_table_col_end (); /* We can assume the next column is the name */ html_table_col_begin (); html_image ("images/folder.gif", "Folder"); html_link ("$appname/index.php?path=$lesspath", ".."); html_table_col_end (); if ($settings["mime_type"]) { html_table_col_begin (); html_text ("Directory"); html_table_col_end (); } 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 ($fileman[$j] == $files["name"]) { $this_selected = 1; break; } } if ($rename && $this_selected) { $renamethis = 1; } elseif ($edit_comments && $this_selected) { $edit_this_comment = 1; } } if (!$settings["dotfiles"] && ereg ("^\.", $files["name"])) { continue; } html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_BG_COLOR); ### # Checkboxes ### html_table_col_begin ("right"); if (!$rename && !$edit_comments && $path != $fakebase && $path != "/") { html_form_input ("checkbox", "fileman[$i]", base64_encode ("$files[name]")); } elseif ($renamethis) { html_form_input ("hidden", "fileman[" . base64_encode ($files[name]) . "]", "$files[name]", NULL, NULL, "checked"); } else { html_nbsp; } html_table_col_end (); ### # File name and icon ### if ($settings["name"]) { html_table_col_begin (); if ($renamethis) { if ($files["mime_type"] == "Directory") { html_image ("images/folder.gif", "Folder"); } html_form_input ("text", "renamefiles[" . base64_encode ($files[name]) . "]", $files["name"], 255); } else { if ($files["mime_type"] == "Directory") { html_image ("images/folder.gif", "Folder"); html_link ("$appname/index.php?path=$path$dispsep$files[name]", $files["name"]); } else { if ($settings["viewonserver"] && isset ($filesdir) && !$files["link_directory"]) { $clickview = "$filesdir$pwd/$files[name]"; } else { $clickview = "$appname/index.php?op=view&file=$files[name]&path=$path"; } if ($settings["viewinnewwin"]) { $target = "_new"; } html_link ($clickview, $files["name"], 0, 1, 0, $target); } } html_table_col_end (); } ### # MIME type ### if ($settings["mime_type"]) { html_table_col_begin (); html_text ($files["mime_type"]); html_table_col_end (); } ### # File size ### if ($settings["size"]) { html_table_col_begin (); $size = $phpgw->vfs->get_size ($files["directory"] . "/" . $files["name"], array (RELATIVE_NONE)); borkb ($size); html_table_col_end (); } ### # Date created ### if ($settings["created"]) { html_table_col_begin (); html_text ($files["created"]); html_table_col_end (); } ### # Date modified ### if ($settings["modified"]) { html_table_col_begin (); if ($files["modified"] != "0000-00-00") { html_text ($files["modified"]); } html_table_col_end (); } ### # Owner name ### if ($settings["owner"]) { html_table_col_begin (); html_text ($phpgw->accounts->id2name ($files["owner_id"])); html_table_col_end (); } ### # Creator name ### if ($settings["createdby_id"]) { html_table_col_begin (); if ($files["createdby_id"]) { html_text ($phpgw->accounts->id2name ($files["createdby_id"])); } html_table_col_end (); } ### # Modified by name ### if ($settings["modifiedby_id"]) { html_table_col_begin (); if ($files["modifiedby_id"]) { html_text ($phpgw->accounts->id2name ($files["modifiedby_id"])); } html_table_col_end (); } ### # Application ### if ($settings["app"]) { html_table_col_begin (); html_text ($files["app"]); html_table_col_end (); } ### # Comment ### if ($settings["comment"]) { html_table_col_begin (); if ($edit_this_comment) { html_form_input ("text", "comment_files[" . base64_encode ($files[name]) . "]", html_encode ($files["comment"], 1), 255); } else { html_text ($files["comment"]); } html_table_col_end (); } ### # Version ### if ($settings["version"]) { html_table_col_begin (); html_link ("$appname/index.php?op=history&file=$files[name]&path=$path", $files["version"], NULL, True, NULL, "_new"); html_table_col_end (); } ### # Deleteable (currently not used) ### if ($settings["deleteable"]) { if ($files["deleteable"] == "N") { html_table_col_begin (); html_image ("images/locked.gif", "Locked"); html_table_col_end (); } else { html_table_col_begin (); html_table_col_end (); } } html_table_row_end (); if ($files["mime_type"] == "Directory") { $usedspace += $fileinfo[0]; } else { $usedspace += $files["size"]; } } html_table_end (); html_break (2); if ($path != "/" && $path != $fakebase) { if (!$rename && !$edit_comments) { html_form_input ("submit", "edit", "Edit"); html_help_link ("edit"); html_nbsp (3); } if (!$edit_comments) { html_form_input ("submit", "rename", "Rename"); html_help_link ("rename"); html_nbsp (3); } if (!$rename && !$edit_comments) { html_form_input ("submit", "delete", "Delete"); html_help_link ("delete"); html_nbsp (3); } if (!$rename) { html_form_input ("submit", "edit_comments", "Edit comments"); 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 ### html_break (1); html_form_input ("submit", "go", "Go to:"); html_help_link ("go_to"); if ($path != "/" && $path != $fakebase) { html_form_input ("submit", "copy", "Copy to:"); html_help_link ("copy_to"); html_form_input ("submit", "move", "Move to:"); html_help_link ("move_to"); } html_form_select_begin ("todir"); html_break (1); ### # First we get the directories in their home directory ### $dirs[] = array ("directory" => $fakebase, "name" => $userinfo["account_lid"]); $ls_array = $phpgw->vfs->ls ($homedir, array (RELATIVE_NONE), True, "Directory"); while (list ($num, $dir) = each ($ls_array)) { $dirs[] = $dir; } ### # Then we get the directories in their membership's home directories ### reset ($memberships); while (list ($num, $group_array) = each ($memberships)) { ### # Don't list directories for groups that don't have access ### if (!$membership_applications[$group_array["account_name"]][$appname]["enabled"]) { continue; } $dirs[] = array ("directory" => $fakebase, "name" => $group_array["account_name"]); $ls_array = $phpgw->vfs->ls ("$fakebase/$group_array[account_name]", array (RELATIVE_NONE), True, "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) && $phpgw->vfs->file_exists ($dir["directory"] . $dir["name"], array (RELATIVE_NONE))) { html_form_option ($dir["directory"] . $dir["name"], $dir["directory"] . $dir["name"]); } } html_form_select_end (); html_help_link ("directory_list"); if ($path != "/" && $path != $fakebase) { html_break (1); html_form_input ("submit", "download", "Download"); html_help_link ("download"); html_nbsp (3); html_form_input ("text", "createdir", NULL, 255, 15); html_form_input ("submit", "newdir", "Create Folder"); html_help_link ("create_folder"); } html_break (1); html_form_input ("submit", "update", "Update"); html_help_link ("update"); if ($path != "/" && $path != $fakebase) { html_nbsp (3); html_form_input ("text", "createfile", NULL, 255, 15); html_form_input ("submit", "newfile", "Create File"); html_help_link ("create_file"); } if ($settings["show_command_line"]) { html_break (2); html_form_input ("text", "command_line", NULL, NULL, 50); html_help_link ("command_line"); html_break (1); html_form_input ("submit", "execute", "Execute"); html_help_link ("execute"); } html_form_end (); html_help_link ("file_stats"); html_break (1); html_text_bold ("Files: "); html_text ($numoffiles); html_nbsp (3); html_text_bold ("Used space: "); html_text (borkb ($usedspace, NULL, 1)); html_nbsp (3); if ($path == $homedir || $path == $fakebase) { html_text_bold ("Unused space: "); html_text (borkb ($userinfo["hdspace"] - $usedspace, NULL, 1)); $ls_array = $phpgw->vfs->ls ($path, array (RELATIVE_NONE)); $i = count ($ls_array); html_break (2); html_text_bold ("Total Files: "); html_text ($i); } ### # Show file upload boxes. Note the last argument to html (). Repeats $show_upload_boxes times ### if ($path != "/" && $path != $fakebase) { html_break (2); html_form_begin ("$appname/index.php?op=upload&path=$path", "post", "multipart/form-data"); html_table_begin (); html_table_row_begin ("center"); html_table_col_begin (); html_text_bold ("File"); html_help_link ("upload_file"); html_table_col_end (); html_table_col_begin (); html_text_bold ("Comment"); html_help_link ("upload_comment"); html_table_col_end (); html_table_row_end (); html_table_row_begin (); html_table_col_begin (); html_form_input ("hidden", "show_upload_boxes", base64_encode ($show_upload_boxes)); html (html_form_input ("file", "upload_file[]", NULL, 255, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); html_table_col_end (); html_table_col_begin (); html (html_form_input ("text", "upload_comment[]", NULL, NULL, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); html_table_col_end (); html_table_row_end (); html_table_end (); html_form_input ("submit", "upload_files", "Upload files"); html_help_link ("upload_files"); html_break (2); html_text ("Show" . html_nbsp (1, True)); html_link ("$appname/index.php?show_upload_boxes=5", "5"); html_nbsp (); html_link ("$appname/index.php?show_upload_boxes=10", "10"); html_nbsp (); html_link ("$appname/index.php?show_upload_boxes=20", "20"); html_nbsp (); html_link ("$appname/index.php?show_upload_boxes=50", "50"); html_nbsp (); html_text ("upload fields"); html_nbsp (); html_help_link ("show_upload_fields"); html_form_end (); } } html_table_col_end (); html_table_row_end (); html_table_end (); html_page_close (); } ### # Handle Editing files ### if ($edit) { ### # If $edit is "Edit", we do nothing, and let the for loop take over ### if ($edit_file) { $edit_file_content = stripslashes ($edit_file_content); } if ($edit_preview) { $content = $edit_file_content; html_break (1); html_text_bold ("Preview of $path/$edit_file"); html_break (2); html_table_begin ("90%"); html_table_row_begin (); html_table_col_begin (); html_text (nl2br ($content)); html_table_col_end (); html_table_row_end (); html_table_end (); } elseif ($edit_save) { $content = $edit_file_content; if ($phpgw->vfs->write ($edit_file, array (RELATIVE_ALL), $content)) { html_text_bold ("Saved $path/$edit_file"); html_break (2); html_link_back (); } else { html_text_error ("Could not save $path/$edit_file"); html_break (2); 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]
$content
"; continue; if ($phpgw->vfs->write ($fileman[$j], array (RELATIVE_ALL), $content)) { html_text_bold ("Saved $path/$fileman[$j]"); html_break (1); } else { html_text_error ("Could not save $path/$fileman[$j]"); html_break (1); } } 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] && $phpgw->vfs->file_exists ($fileman[$j], array (RELATIVE_ALL))) { if ($edit_file) { $content = stripslashes ($edit_file_content); } else { $content = $phpgw->vfs->read ($fileman[$j]); } html_table_begin ("100%"); html_form_begin ("$appname/index.php?path=$path"); html_form_input ("hidden", "edit", True); 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++) { html_form_input ("hidden", "fileman[$i]", base64_encode ($fileman[$i])); } html_table_row_begin (); html_table_col_begin (); html_form_textarea ("edit_file_content", 35, 75, $content); html_table_col_end (); html_table_col_begin ("center"); html_form_input ("submit", "edit_preview", "Preview " . html_encode ($fileman[$j], 1)); html_break (1); html_form_input ("submit", "edit_save", "Save " . html_encode ($fileman[$j], 1)); // html_break (1); // html_form_input ("submit", "edit_save_all", "Save all"); html_table_col_end (); html_table_row_end (); html_break (2); html_form_end (); html_table_end (); } } } ### # Handle File Uploads ### elseif ($op == "upload" && $path != "/" && $path != $fakebase) { for ($i = 0; $i != $show_upload_boxes; $i++) { if ($badchar = bad_chars ($upload_file_name[$i], True, True)) { echo $phpgw->common->error_list (array (html_encode ("Filenames cannot contain \"$badchar\"", 1))); continue; } ### # Check to see if the file exists in the database, and get its info at the same time ### $ls_array = $phpgw->vfs->ls ($path . "/" . $upload_file_name[$i], array (RELATIVE_NONE), False, False, True); $fileinfo = $ls_array[0]; if ($fileinfo["name"]) { if ($fileinfo["mime_type"] == "Directory") { echo $phpgw->common->error_list (array ("Cannot replace $fileinfo[name] because it is a directory")); continue; } } if ($upload_file_size[$i] > 0) { if ($fileinfo["name"] && $fileinfo["deleteable"] != "N") { $phpgw->vfs->set_attributes ($upload_file_name[$i], array (RELATIVE_ALL), array ("owner_id" => $userinfo["username"], "modifiedby_id" => $userinfo["username"], "modified" => $now, "size" => $upload_file_size[$i], mime_type => $upload_file_type[$i], "deleteable" => "Y", "comment" => stripslashes ($upload_comment[$i]))); $phpgw->vfs->cp ($upload_file[$i], "$upload_file_name[$i]", array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)); html_text_summary ("Replaced $disppath/$upload_file_name[$i]", $upload_file_size[$i]); } else { $phpgw->vfs->cp ($upload_file[$i], $upload_file_name[$i], array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL)); $phpgw->vfs->set_attributes ($upload_file_name[$i], array (RELATIVE_ALL), array ("mime_type" => $upload_file_type[$i], "comment" => stripslashes ($upload_comment[$i]))); html_text_summary ("Created $disppath/$upload_file_name[$i]", $upload_file_size[$i]); } } elseif ($upload_file_name[$i]) { $phpgw->vfs->touch ($upload_file_name[$i], array (RELATIVE_ALL)); $phpgw->vfs->set_attributes ($upload_file_name[$i], array (RELATIVE_ALL), array ("mime_type" => $upload_file_type[$i], "comment" => $upload_comment[$i])); html_text_summary ("Created $disppath/$upload_file_name[$i]", $file_size[$i]); } } html_break (2); html_link_back (); } ### # Handle Editing comments ### elseif ($comment_files) { while (list ($file) = each ($comment_files)) { if ($badchar = bad_chars ($comment_files[$file], False, True)) { echo $phpgw->common->error_list (array (html_text_italic ($file, 1) . html_encode (": Comments cannot contain \"$badchar\"", 1))); continue; } $phpgw->vfs->set_attributes ($file, array (RELATIVE_ALL), array ("comment" => stripslashes ($comment_files[$file]))); html_text_summary ("Updated comment for $path/$file"); } html_break (2); html_link_back (); } ### # Handle Renaming Files and Directories ### elseif ($renamefiles) { while (list ($from, $to) = each ($renamefiles)) { if ($badchar = bad_chars ($to, True, True)) { echo $phpgw->common->error_list (array (html_encode ("File names cannot contain \"$badchar\"", 1))); continue; } if (ereg ("/", $to) || ereg ("\\\\", $to)) { echo $phpgw->common->error_list (array ("File names cannot contain \\ or /")); } elseif (!$phpgw->vfs->mv ($from, $to)) { echo $phpgw->common->error_list (array ("Could not rename $disppath/$from to $disppath/$to")); } else { html_text_summary ("Renamed $disppath/$from to $disppath/$to"); } } html_break (2); html_link_back (); } ### # Handle Moving Files and Directories ### elseif ($move) { while (list ($num, $file) = each ($fileman)) { if ($phpgw->vfs->mv ($file, $todir . "/" . $file, array (RELATIVE_ALL, RELATIVE_NONE))) { $moved++; html_text_summary ("Moved $disppath/$file to $todir/$file"); } else { echo $phpgw->common->error_list (array ("Could not move $disppath/$file to $todir/$file")); } } if ($moved) { html_break (2); html_link ("$appname/index.php?path=$todir", "Go to $todir"); } html_break (2); html_link_back (); } ### # Handle Copying of Files and Directories ### elseif ($copy) { while (list ($num, $file) = each ($fileman)) { if ($phpgw->vfs->cp ($file, $todir . "/" . $file, array (RELATIVE_ALL, RELATIVE_NONE))) { $copied++; html_text_summary ("Copied $disppath/$file to $todir/$file"); } else { echo $phpgw->common->error_list (array ("Could not copy $disppath/$file to $todir/$file")); } } if ($copied) { html_break (2); html_link ("$appname/index.php?path=$todir", "Go to $todir"); } html_break (2); html_link_back (); } ### # Handle Deleting Files and Directories ### elseif ($delete) { for ($i = 0; $i != $numoffiles; $i++) { if ($fileman[$i]) { if ($phpgw->vfs->delete ($fileman[$i])) { html_text_summary ("Deleted $disppath/$fileman[$i]", $fileinfo["size"]); } else { $phpgw->common->error_list (array ("Could not delete $disppath/$fileman[$i]")); } } } html_break (2); html_link_back (); } elseif ($newdir && $createdir) { if ($badchar = bad_chars ($createdir, True, True)) { echo $phpgw->common->error_list (array (html_encode ("Directory names cannot contain \"$badchar\"", 1))); html_break (2); html_link_back (); html_page_close (); } if ($createdir[strlen($createdir)-1] == " " || $createdir[0] == " ") { echo $phpgw->common->error_list (array ("Cannot create directory because it begins or ends in a space")); html_break (2); html_link_back (); html_page_close (); } $ls_array = $phpgw->vfs->ls ($path . "/" . $createdir, array (RELATIVE_NONE), False, False, True); $fileinfo = $ls_array[0]; if ($fileinfo["name"]) { if ($fileinfo["mime_type"] != "Directory") { echo $phpgw->common->error_list (array ("$fileinfo[name] already exists as a file")); html_break (2); html_link_back (); html_page_close (); } else { echo $phpgw->common->error_list (array ("Directory $fileinfo[name] already exists")); html_break (2); html_link_back (); html_page_close (); } } else { if ($phpgw->vfs->mkdir ($createdir)) { html_text_summary ("Created directory $disppath/$createdir"); html_break (2); html_link ("$appname/index.php?path=$disppath/$createdir", "Go to $disppath/$createdir"); } else { echo $phpgw->common->error_list (array ("Could not create $disppath/$createdir")); } } html_break (2); html_link_back (); } html_page_close (); ?>