True, 'view' => True, 'view_file' => True ); var $bo; var $nextmatchs; var $browser; var $tempalte_dir; var $help_info; function uiphpwebhosting() { $this->bo = CreateObject('phpwebhosting.bophpwebhosting'); $this->nextmatchs = CreateObject('phpgwapi.nextmatchs'); $this->browser = CreateObject('phpgwapi.browser'); $this->template_dir = $GLOBALS['phpgw']->common->get_tpl_dir($GLOBALS['phpgw_info']['flags']['currentapp']); $this->load_header(); $this->check_access(); $this->create_home_dir(); $this->verify_path(); $this->update(); } function load_header() { if(($this->bo->download && (count($this->bo->fileman) > 0)) || ($this->bo->op == 'view' && $this->bo->file) || ($this->bo->op == 'history' && $this->bo->file) || ($this->bo->op == 'help' && $this->bo->help_name)) { } else { unset($GLOBALS['phpgw_info']['flags']['noheader']); unset($GLOBALS['phpgw_info']['flags']['nonavbar']); unset($GLOBALS['phpgw_info']['flags']['noappheader']); unset($GLOBALS['phpgw_info']['flags']['noappfooter']); $GLOBALS['phpgw']->common->phpgw_header(); } } function check_access() { if($this->bo->path != $this->bo->homedir && $this->bo->path != $this->bo->fakebase && $this->bo->path != '/' && !$this->bo->vfs->acl_check($this->bo->path,Array(RELATIVE_NONE),PHPGW_ACL_READ)) { $this->no_access_exists(lang('You do not have access to X',$this->bo->path)); } $this->bo->userinfo['working_id'] = $this->bo->vfs->working_id; $this->bo->userinfo['working_lid'] = $GLOBALS['phpgw']->accounts->id2name($this->bo->userinfo['working_id']); } function no_access_exists($error_msg) { if($this->bo->debug) { echo 'DEBUG: ui.no_access_exists: you do not have access to this directory
'."\n"; } $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_unknowns('remove'); $p->set_file( Array( '_errors' => 'errors.tpl' ) ); $p->set_block('_errors','error_page','error_page'); $p->set_block('_errors','ind_error','ind_error'); $p->set_var('error',$error_msg); $p->parse('errors','ind_error',True); $p->set_var('error','

Go to your Home directory' ); $p->parse('errors','ind_error',True); $p->pfp('output','error_page'); $GLOBALS['phpgw']->common->phpgw_exit(); } function create_home_dir() { ### # If their home directory doesn't exist, we create it # Same for group directories ### if($this->bo->debug) { echo 'DEBUG: ui.create_home_dir: PATH = '.$this->bo->path.'
'."\n"; echo 'DEBUG: ui.create_home_dir: PATH = '.urlencode($this->bo->path).'
'."\n"; } if(($this->bo->path == $this->bo->homedir) && !$this->bo->vfs->file_exists($this->bo->homedir,Array(RELATIVE_NONE))) { //$this->bo->vfs->override_acl = 1; $this->bo->vfs->mkdir($this->bo->homedir,Array(RELATIVE_NONE)); //$this->bo->vfs->override_acl = 0; } // elseif(preg_match("|^".$this->bo->fakebase."\/(.*)$|U",$this->bo->path,$this->bo->matches)) // { // if (!$this->bo->vfs->file_exists($this->bo->path,Array(RELATIVE_NONE))) // { // //$this->bo->vfs->override_acl = 1; // $this->bo->vfs->mkdir($this->bo->path,Array(RELATIVE_NONE)); // //$this->bo->vfs->override_acl = 0; // // if($this->bo->debug) // { // echo 'DEBUG: ui.create_home_dir: PATH = '.$this->bo->path.'
'."\n"; // echo 'DEBUG: ui.create_home_dir(): matches[1] = '.$this->bo->matches[1].'
'."\n"; // } // // $group_id = $GLOBALS['phpgw']->accounts->name2id($this->bo->matches[1]); // if($group_id) // { // $this->bo->vfs->set_attributes($this->bo->path,Array(RELATIVE_NONE),Array('owner_id' => $group_id, 'createdby_id' => $group_id)); // } // } // } } function verify_path() { ### # Verify path is real ### if($this->bo->debug) { echo 'DEBUG: ui.verify_path: PATH = '.$this->bo->path.'
'."\n"; echo 'DEBUG: ui.verify_path: exists = '.$this->bo->vfs->file_exists($this->bo->path,Array(RELATIVE_NONE)).'
'."\n"; } if($this->bo->path != $this->bo->homedir && $this->bo->path != '/' && $this->bo->path != $this->bo->fakebase && !$this->bo->vfs->file_exists($this->bo->path,Array(RELATIVE_NONE))) { $this->no_access_exists(lang('Directory '.$this->bo->path.' does not exist')); } } function update() { /* Update if they request it, or one out of 20 page loads */ srand ((double) microtime() * 1000000); if($this->bo->update || rand(0, 19) == 4) { $this->bo->vfs->update_real($this->bo->path,Array(RELATIVE_NONE)); } if($this->bo->update) { // This needs to redirect to the index after the user issues an update..... } } function build_help($help_option) { if($this->bo->settings['show_help']) { return ''."\n" . ' [?]'."\n" . ' '; } else { return ''; } } function image($image,$alt) { return ''.$alt.''; } function link($array_params,$text) { return ''.$text.''; } function column_header($internal,$displayed,$link=True) { if($link) { $header_str = ''.lang($displayed).''.$this->build_help(ereg_replace(' ','_',$displayed)); } else { $header_str = $displayed.$this->build_help(ereg_replace(' ','_',$displayed)); } return Array( 'td_extras' => '', 'column_header' => $header_str ); } function index() { $files_array = $this->bo->load_files(); if(count($files_array) || $this->bo->cwd) { $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_unknowns('remove'); $p->set_file( Array( '_index' => 'index.tpl' ) ); $p->set_block('_index','index','index'); $p->set_block('_index','column_headers','column_headers'); $p->set_block('_index','column_rows','column_rows'); $tr = $this->nextmatchs->alternate_row_color($tr); $p->set_var('tr_extras',' bgcolor="'.$tr.'" border="0"'); $var = Array( 'img_up' => $this->link(Array( 'menuaction' => $this->bo->appname.'.ui'.$this->bo->appname.'.index', 'path' => $this->bo->lesspath ), $this->image('folder_up.gif',lang('Up'))), 'help_up' => $this->build_help('up'), 'img_home' => $this->image('folder_home.gif',lang('Folder')), 'dir' => ''."\n" . ' '.strtoupper($this->bo->path).''."\n" . ' ', 'help_home' => $this->build_help('home'), ); $p->set_var($var); $p->set_var($this->column_header('','Sort By:',False)); $p->parse('col_headers','column_headers',True); $columns = 1; reset($this->bo->file_attributes); while(list($internal,$displayed) = each($this->bo->file_attributes)) { if ($this->bo->settings[$internal]) { $p->set_var($this->column_header($internal,$displayed,True)); $p->parse('col_headers','column_headers',True); $columns++; } } $tr = $this->nextmatchs->alternate_row_color($tr); $p->set_var('tr_extras',' bgcolor="'.$tr.'" border="0"'); $p->parse('col_row','column_rows',True); $p->set_var('colspan',$columns); if($this->bo->settings['dotdot'] && $this->bo->settings['name'] && $this->bo->path != '/') { $var = Array( 'col_headers' => '', 'td_extras' => '', 'column_header' => ' ' ); $p->set_var($var); $p->parse('col_headers','column_headers',True); $var = Array( 'td_extras' => '', 'column_header' => $this->image('folder.gif','folder') .$this->link( Array( 'menuaction' => $this->bo->appname.'.ui'.$this->bo->appname.'.index', 'path' => $this->bo->lesspath ), '..' ) ); $p->set_var($var); $p->parse('col_headers','column_headers',True); $loop_cntr = 2; if($this->bo->settings['mime_type']) { $var = Array( 'td_extras' => '', 'column_header' => 'Directory' ); $loop_cntr++; } $p->set_var($var); $p->parse('col_headers','column_headers',True); $var = Array( 'td_extras' => '', 'column_header' => ' ' ); for($i=$loop_cntr;$i<$columns;$i++) { $p->set_var($var); $p->parse('col_headers','column_headers',True); } $tr = $this->nextmatchs->alternate_row_color($tr); $p->set_var('tr_extras',' bgcolor="'.$tr.'" border="0"'); $p->parse('col_row','column_rows',True); $p->set_var('col_headers',''); } reset($files_array); $numoffiles = count($files_array); for($i=0;$i!=$numoffiles;$i++) { $files = $files_array[$i]; $var = Array( 'td_extras' => '', 'column_header' => '' ); $p->set_var($var); $p->parse('col_headers','column_headers'); reset($this->bo->file_attributes); while(list($internal,$displayed) = each($this->bo->file_attributes)) { if($this->bo->settings[$internal]) { $var = Array( 'td_extras' => '' ); switch($internal) { case 'name': switch($files['mime_type']) { case 'Directory': $var['column_header'] = $this->image('folder.gif','folder') .$this->link( Array( 'menuaction' => $this->bo->appname.'.ui'.$this->bo->appname.'.index', 'path' => $this->bo->path.$this->bo->dispsep.$files['name'] ), ''.$files['name'].'' ); break; default: $var['column_header'] = $this->link( Array( 'menuaction' => $this->bo->appname.'.ui'.$this->bo->appname.'.view', // 'op' => 'view', 'path' => urlencode($this->bo->path), 'file' => urlencode($files['name']) ), ''.$files['name'].'' ); // $var['column_header'] = ''.$files['name'].''; break; } break; case 'size': $var['column_header'] = $this->bo->borkb($files['size']); $var['td_extras'] = ' align="right"'; break; case 'version': $var['column_header'] = $this->link( Array( 'menuaction' => $this->bo->appname.'.ui'.$this->bo->appname.'.history', 'path' => $this->bo->path, 'file' => $files['name'] ), $files['version'] ); break; case 'modified': case 'created': if($files[$internal] && $files[$internal] != '0000-00-00') { $year = substr($files[$internal],0,4); $month = substr($files[$internal],5,2); $day = substr($files[$internal],8,2); // echo $files['name'].' : '.$internal.' : '.$year.'.'.$month.'.'.$day.'
'."\n"; $datetime = mktime(0,0,0,$month,$day,$year); $var['column_header'] = date($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'],$datetime); } else { $var['column_header'] = ' '; } break; case 'owner': case 'createdby_id': case 'modifiedby_id': switch($internal) { case 'owner': $ivar = 'owner_id'; break; default: $ivar = $internal; break; } $var['column_header'] = ($files[$ivar]?$GLOBALS['phpgw']->accounts->id2name($files[$ivar]):' '); break; default: $var['column_header'] = ($files[$internal]?$files[$internal]:' '); break; } $p->set_var($var); $p->parse('col_headers','column_headers',True); } } $tr = $this->nextmatchs->alternate_row_color($tr); $p->set_var('tr_extras',' bgcolor="'.$tr.'" border="0"'); $p->parse('col_row','column_rows',True); $p->set_var('col_headers',''); } $p->pfp('output','index'); } } function view() { if($this->bo->vfs->file_exists($this->bo->path.'/'.$this->bo->file,Array(RELATIVE_NONE))) { $content_type = $this->bo->vfs->file_type($this->bo->path.$this->bo->dispsep.$this->bo->file,Array(RELATIVE_NONE)); if($content_type) { $cont_type = explode('/',$content_type); $content_type = $cont_type[1]; } else { } switch($content_type) { case 'jpeg': case 'gif': case 'bmp': case 'png': $alignment = 'center'; $file_content = ''."\n"; break; default: $alignment = 'left'; $file_content = nl2br($this->bo->vfs->read($this->bo->path.$this->bo->dispsep.$this->bo->file,Array(RELATIVE_NONE))); break; } $file = $this->bo->path.$this->bo->dispsep.$this->bo->file; $GLOBALS['tr_color'] = $GLOBALS['phpgw_info']['theme']['row_off']; echo ''."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . ' '."\n" . '
'."\n" . ' TYPE: '.$this->bo->vfs->file_type($file,Array(RELATIVE_NONE)).'
'."\n" . '
'."\n" . ' FILENAME: '.$file."\n" . '
'."\n" . ' VERSION: '.$this->bo->vfs->get_version($file,Array(RELATIVE_NONE))."\n" . '
'."\n" . $file_content."\n" . '
'."\n"; } } function view_file() { $file = $this->bo->path.$this->bo->dispsep.$this->bo->file; if($this->bo->vfs->file_exists($file,Array(RELATIVE_NONE))) { Header('Content-length: '.$this->bo->vfs->get_size($file,Array(RELATIVE_NONE))); Header('Content-type: '.$this->bo->vfs->file_type($file,Array(RELATIVE_NONE))); Header('Content-disposition: attachment; filename="'.$this->bo->file.'"'); echo $this->bo->vfs->read($file,Array(RELATIVE_ALL)); flush(); } $GLOBALS['phpgw']->common->phpgw_exit (); } }