We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15291
    • 18 Posts
    Ik loop tegen error aan wanneer ik mijn css file probeer te wijzigen vanuit ModX. Het vreemde is dat ik inmiddels meerdere sites heb gemaakt met ModX, en deze error is nieuw voor me; bij alle andere websites kan ik gewoon in m’n filemanager.

    Ik krijg de volgende error:

    Warning: dir(/www/htdocs/kinderfe/) [function.dir]: failed to open dir: Permission denied in /www/htdocs/kinderfe/manager/actions/files.dynamic.php on line 418
    
    Fatal error: Call to a member function read() on a non-object in /www/htdocs/kinderfe/manager/actions/files.dynamic.php on line 421
    Bestandsnaam 	Gewijzigd 	Bestandsgrootte 	Opties


    Mijn files.dynamic.php file ziet er als volgt uit:

    <?php
    if(IN_MANAGER_MODE!="true") die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the MODx Content Manager instead of accessing this file directly.");
    if(!$modx->hasPermission('file_manager')) {
    	$e->setError(3);
    	$e->dumpError();
    }
    
    if ($manager_theme)
            $manager_theme .= '/';
    else    $manager_theme  = '';
    
    // settings
    $excludes = array('.', '..', 'cgi-bin', 'manager', '.svn');
    $editablefiles = array('.txt', '.php', '.shtml', '.html', '.htm', '.xml', '.js', '.css', '.pageCache', $friendly_url_suffix);
    $inlineviewablefiles = array('.txt', '.php', '.html', '.htm', '.xml', '.js', '.css', '.pageCache', $friendly_url_suffix);
    $viewablefiles = array('.jpg', '.gif', '.png', '.ico');
    // Mod added by Raymond
    $enablefileunzip = true;
    $enablefiledownload = true;
    $new_file_permissions = octdec($new_file_permissions);
    $newfolderaccessmode = $new_folder_permissions ? octdec($new_folder_permissions) : 0777;
    // End Mod -  by Raymond
    // make arrays from the file upload settings
    $upload_files = explode(',',$upload_files);
    $upload_images = explode(',',$upload_images);
    $upload_media = explode(',',$upload_media);
    $upload_flash = explode(',',$upload_flash);
    // now merge them
    $uploadablefiles = array_merge($upload_files,$upload_images,$upload_media,$upload_flash);
    $count = count($uploadablefiles);
    for($i=0; $i<$count; $i++) {
    	$uploadablefiles[$i] = ".".$uploadablefiles[$i]; // add a dot :)
    }
    // end settings
    
    function ufilesize($size) {
    	$a = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
    	$pos = 0;
    	while ($size >= 1024) {
    		   $size /= 1024;
    		   $pos++;
    	}
    	return round($size,2)." ".$a[$pos];
    }
    
    function removeLastPath($string) {
       $pos = false;
       $search = "/";
       if (is_int(strpos($string, $search))) {
    	   $endPos = strlen($string);
    	   while ($endPos > 0) {
    		   $endPos = $endPos - 1;
    		   $pos = strpos($string, $search, $endPos);
    		   if (is_int($pos)) {
    			   break;
    		   }
    	   }
       }
       if (is_int($pos)) {
    	   $len = strlen($search);
    	   return substr($string, 0, $pos);
       }
    	return $string;
    }
    
    function getExtension($string) {
       $pos = false;
       $search = ".";
       if (is_int(strpos($string, $search))) {
    	   $endPos = strlen($string);
    	   while ($endPos > 0) {
    		   $endPos = $endPos - 1;
    		   $pos = strpos($string, $search, $endPos);
    		   if (is_int($pos)) {
    			   break;
    		   }
    	   }
       }
       if (is_int($pos)) {
    	   $len = strlen($search);
    	   return substr($string, $pos);
       }
    	return $string;
    }
    
    function fsize($file) {
           $a = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
           $pos = 0;
           $size = filesize($file);
           while ($size >= 1024) {
                   $size /= 1024;
                   $pos++;
           }
           return round($size,2)." ".$a[$pos];
    }
    
    function mkdirs($strPath, $mode){ // recursive mkdir function
    	if (is_dir($strPath)) return true;
    	$pStrPath = dirname($strPath);
    	if (!mkdirs($pStrPath, $mode)) return false;
    	return @mkdir($strPath);
    }
    
    function logFileChange($type, $filename) {
    	//global $_lang;
    
    	include_once('log.class.inc.php');
    	$log = new logHandler();
    
    	switch ($type) {
    	case 'upload':		$string = 'Uploaded File'; break;
    	case 'delete':		$string = 'Deleted File'; break;
    	case 'modify':		$string = 'Modified File'; break;
    	default:		$string = 'Viewing File'; break;
    	}
    
    	$string = sprintf($string, $filename);
    	$log->initAndWriteLog($string, '', '', '', $type, $filename);
    
    	// HACK: change the global action to prevent double logging
    	// @see manager/index.php @ 915
    	global $action; $action = 1;
    }
    
    // get the current work directory
    if(isset($_REQUEST['path']) && !empty($_REQUEST['path'])) {
            $_REQUEST['path'] = str_replace('..','',$_REQUEST['path']);
    	$startpath = is_dir($_REQUEST['path']) ? $_REQUEST['path'] : removeLastPath($_REQUEST['path']) ;
    } else {
    	$startpath = $filemanager_path;
    }
    
    $len = strlen($filemanager_path);
    
    // Raymond: get web start path for showing pictures
    $rf = realpath($filemanager_path);
    $rw = realpath('../');
    $webstart_path = str_replace('\\','/',str_replace($rw,'',$rf));
    if(substr($webstart_path,0,1)=='/') $webstart_path = '..'.$webstart_path;
    else $webstart_path = '../'.$webstart_path;
    
    ?>
    
    <h1><?php echo $_lang['files_files']?></h1>
    
    <div class="sectionBody">
    <script type="text/javascript" src="media/script/multifile.js"></script>
    <script type="text/javascript">
    function viewfile(url) {
    	document.getElementById('imageviewer').style.border="1px solid #000080";
    	document.getElementById('imageviewer').src=url;
    }
    
    function setColor(o,state){
    	if (!o) return;
    	if(state && o.style) o.style.backgroundColor='#eeeeee';
    	else if (o.style) o.style.backgroundColor='transparent';
    }
    
    function confirmDelete() {
    	return confirm("<?php echo $_lang['confirm_delete_file'] ?>");
    }
    
    function confirmDeleteFolder() {
    	return confirm("<?php echo str_replace('file','folder',$_lang['confirm_delete_file']) ?>");
    }
    
    function confirmUnzip() {
    	return confirm("<?php echo $_lang['confirm_unzip_file'] ?>");
    }
    
    function getFolderName(a){
    	var f;
    	f=window.prompt('Enter New Folder Name:','')
    	if (f) a.href+=escape(f);
    	return (f) ? true:false;
    }
    </script>
    <?php
    if(!empty($_FILES['userfile'])) {
    
      for ($i = 0; $i <= count($_FILES['userfile']['tmp_name']); $i++) {
       if(!empty($_FILES['userfile']['tmp_name'][$i])) {
         $userfiles[$i]['tmp_name'] = $_FILES['userfile']['tmp_name'][$i];
         $userfiles[$i]['error'] = $_FILES['userfile']['error'][$i];
         $userfiles[$i]['name'] = $_FILES['userfile']['name'][$i];
         $userfiles[$i]['type'] = $_FILES['userfile']['type'][$i];
       }
      }
    
      foreach((array)$userfiles as $userfile) {
    
    	// this seems to be an upload action.
    	printf("<p>".$_lang['files_uploading']."</p>", $userfile['name'], substr($startpath, $len, strlen($startpath)));
    	echo $userfile['error']==0 ? "<p>".$_lang['files_file_type'].$userfile['type'].", ".fsize($userfile['tmp_name']).'</p>' : '';
    
    	$userfilename = $userfile['tmp_name'];
    
    	if (is_uploaded_file($userfilename)) {
    	  // file is uploaded file, process it!
    		if(!in_array(getExtension($userfile['name']), $uploadablefiles)) {
    			echo '<p><span class="warning">'.$_lang['files_filetype_notok'].'</span></p>';
    		} else {
    			if(@move_uploaded_file($userfile['tmp_name'], $_POST['path'].'/'.$userfile['name'])) {
    					// Ryan: Repair broken permissions issue with file manager
    					if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN')
    						@chmod($_POST['path']."/".$userfile['name'], $new_file_permissions);
    					// Ryan: End
    					echo '<p><span class="success">'.$_lang['files_upload_ok'].'</span></p>';
    
    					// invoke OnFileManagerUpload event
    					$modx->invokeEvent('OnFileManagerUpload',
    						array(
    							'filepath'	=> $_POST['path'],
    							'filename'	=> $userfile['name']
    					));
    					// Log the change
    					logFileChange('upload', $_POST['path'].'/'.$userfile['name']);
    			} else {
    				echo '<p><span class="warning">'.$_lang['files_upload_copyfailed'].'</span> '.$_lang["files_upload_permissions_error"].'</p>';
    			}
    		}
    	}else{
    		echo '<br /><span class="warning"><b>'.$_lang['files_upload_error'].':</b>';
    	  switch($userfile['error']){
    	   case 0: //no error; possible file attack!
    		 echo $_lang['files_upload_error0'];
    		 break;
    	   case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
    		 echo $_lang['files_upload_error1'];
    		 break;
    	   case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
    		 echo $_lang['files_upload_error2'];
    		 break;
    	   case 3: //uploaded file was only partially uploaded
    		 echo $_lang['files_upload_error3'];
    		 break;
    	   case 4: //no file was uploaded
    		 echo $_lang['files_upload_error4'];
    		 break;
    	   default: //a default error, just in case!  :)
    		 echo $_lang['files_upload_error5'];
    		 break;
    		}
    		echo '</span><br />';
    	}
    	echo '<hr/>';
    }
    }
    
    if($_POST['mode']=='save') {
    	echo $_lang['editing_file'];
    	$filename = $_POST['path'];
    	$content = $_POST['content'];
    	if (!$handle = fopen($filename, 'w')) {
    		 echo 'Cannot open file (',$filename,')';
    		 exit;
    	}
    
    	// Write $content to our opened file.
    	if (fwrite($handle, $content) === FALSE) {
    	   echo '<span class="warning"><b>'.$_lang['file_not_saved'].'</b></span><br /><br />';
    	} else {
    	   echo '<span class="success"><b>'.$_lang['file_saved'].'</b></span><br /><br />';
    	   $_REQUEST['mode'] = 'edit';
    	}
    	fclose($handle);
    
    	// Log the change
    	logFileChange('modify', $filename);
    }
    
    
    if($_REQUEST['mode']=='delete') {
    	printf($_lang['deleting_file'], str_replace('\\', '/', $_REQUEST['path']));
    	$file = $_REQUEST['path'];
    	if (!@unlink($file)) {
    	   echo '<span class="warning"><b>'.$_lang['file_not_deleted'].'</b></span><br /><br />';
    	} else {
    	   echo '<span class="success"><b>'.$_lang['file_deleted'].'</b></span><br /><br />';
    	}
    
    	// Log the change
    	logFileChange('delete', $file);
    }
    
    
    echo $_lang['files_dir_listing']?><b><?php echo substr($startpath, $len, strlen($startpath))=='' ? '/' : substr($startpath, $len, strlen($startpath))?></b><br /><br />
    <?php
    // check to see user isn't trying to move below the document_root
    if(substr(strtolower(str_replace('//','/',$startpath."/")), 0, $len)!=strtolower(str_replace('//','/',$filemanager_path.'/'))) {
    	echo $_lang['files_access_denied']?>
    </div>
    
    <?php
    	exit;
    }
    
    // Unzip .zip files - by Raymond
    if ($enablefileunzip && $_REQUEST['mode']=='unzip' && is_writable($startpath)){
    	// by patrick_allaert - php user notes
    	function unzip($file, $path) {
    		global $newfolderaccessmode;
    		// added by Raymond
    		$r = substr($path,strlen($path)-1,1);
    		if ($r!='\\'||$r!='/') $path .='/';
    		if (!extension_loaded('zip')) {
    			return 0;
    		}
    		// end mod
    		$zip = zip_open($file);
    		if ($zip) {
    			$old_umask = umask(0);
    			while ($zip_entry = zip_read($zip)) {
    				if (zip_entry_filesize($zip_entry) > 0) {
    					// str_replace must be used under windows to convert "/" into "\"
    					$complete_path = $path.str_replace('/','\\',dirname(zip_entry_name($zip_entry)));
    					$complete_name = $path.str_replace ('/','\\',zip_entry_name($zip_entry));
    					if(!file_exists($complete_path)) {
    						$tmp = '';
    						foreach(explode('\\',$complete_path) AS $k) {
    							$tmp .= $k.'\\';
    							if(!file_exists($tmp)) {
    								@mkdir($tmp, $newfolderaccessmode);
    							}
    						}
    					}
    					if (zip_entry_open($zip, $zip_entry, 'r')) {
    						$fd = fopen($complete_name, 'w');
    						fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
    						fclose($fd);
    						zip_entry_close($zip_entry);
    					}
    				}
    			}
    			umask($old_umask);
    			zip_close($zip);
    			return true;
    		}
    		zip_close($zip);
    	}
    	if(!$err=@unzip(realpath("$startpath/".$_REQUEST['file']),realpath($startpath))) {
    		echo '<span class="warning"><b>'.$_lang['file_unzip_fail'].($err===0? 'Missing zip library (php_zip.dll / zip.so)':'').'</b></span><br /><br />';
    	} else {
    		echo '<span class="success"><b>'.$_lang['file_unzip'].'</b></span><br /><br />';
    	}
    }
    // End Unzip - Raymond
    
    
    // New Folder & Delete Folder option - Raymond
    if (is_writable($startpath)){
    	// Delete Folder
    	if($_REQUEST['mode']=='deletefolder') {
    		$folder = $_REQUEST['folderpath'];
    		if(!@rmdir($folder)) {
    			echo '<span class="warning"><b>'.$_lang['file_folder_not_deleted'].'</b></span><br /><br />';
    		} else {
    			echo '<span class="success"><b>'.$_lang['file_folder_deleted'].'</b></span><br /><br />';
    		}
    	}
    
    
    // Create folder here
    if($_REQUEST['mode']=='newfolder') {
    	$old_umask = umask(0);
    	$foldername = str_replace('..\\','',str_replace('../','',$_REQUEST['name']));
    	if(!mkdirs($startpath."/$foldername",$newfolderaccessmode)) {
    		echo '<span class="warning"><b>',$_lang['file_folder_not_created'],'</b></span><br /><br />';
    	} else {
    		if (!@chmod($startpath.'/'.$foldername,$newfolderaccessmode)) {
    			echo '<span class="warning"><b>'.$_lang['file_folder_chmod_error'].'</b></span><br /><br />';
    		} else {
    			echo '<span class="success"><b>'.$_lang['file_folder_created'].'</b></span><br /><br />';
    		}
    	}
    	umask($old_umask);
    }
    	echo '<img src="media/style/'.$manager_theme.'images/tree/folder.gif" border="0" align="absmiddle" alt="" /> <a href="index.php?a=31&mode=newfolder&path='.urlencode($startpath).'&name=" onclick="return getFolderName(this);"><b>'.$_lang['add_folder'].'</b></a><br />';
    }
    // End New Folder - Raymond
    
    $uponelevel = removeLastPath($startpath);
    
    // To Top Level with folder icon to the left
    if($startpath==$filemanager_path || $startpath.'/' == $filemanager_path) {
    	echo '<img src="media/style/',$manager_theme,'images/tree/deletedfolder.gif" border="0" align="absmiddle" alt="" /><span style="color:#bbb;cursor:default;"> <b>',$_lang['files_top_level'],'</b></span><br />';
    } else {
    	echo '<img src="media/style/',$manager_theme,'images/tree/folder.gif" border="0" align="absmiddle" alt="" /> <a href="index.php?a=31&mode=drill&path=',$filemanager_path,'"><b>',$_lang['files_top_level'],'</b></a><br />';
    }
    // Up One level with folder icon to the left
    if($startpath == $filemanager_path || $startpath.'/' == $filemanager_path) {
    	echo '<img src="media/style/',$manager_theme,'images/tree/deletedfolder.gif" border="0" align="absmiddle" alt="" /><span style="color:#bbb;cursor:default;"> <b>'.$_lang['files_up_level'].'</b></span><br />';
    } else {
    	echo '<a href="index.php?a=31&mode=drill&path=',urlencode($uponelevel),'"><img src="media/style/',$manager_theme,'images/tree/folder.gif" border="0" align="absmiddle" alt="" /> <b>',$_lang['files_up_level'],'</b></a><br />';
    }
    echo '<br />';
    
    
    $filesize = 0;
    $files = 0;
    $folders = 0;
    $dirs_array = array();
    $files_array = array();
    if(strlen(MODX_BASE_PATH) < strlen($filemanager_path)) $len--;
    
    function ls($curpath) {
    	global $_lang;
    	global $excludes, $editablefiles, $inlineviewablefiles, $viewablefiles, $enablefileunzip, $enablefiledownload, $uploadablefiles, $folders, $files, $filesizes, $len, $dirs_array, $files_array, $webstart_path, $manager_theme, $modx;
    	$dircounter = 0;
    	$filecounter = 0;
    	$curpath = str_replace('//','/',$curpath.'/');
    
    	if (!is_dir($curpath)) {
    		echo 'Invalid path "',$curpath,'"<br />';
    		return;
    	}
    	$dir = dir($curpath);
    
    	// first, get info
    	while ($file = $dir->read()) {
    		if(!in_array($file, $excludes)) {
    			$newpath = $curpath.$file;
    			if(is_dir($newpath)) {
    				$dirs_array[$dircounter]['dir'] = $newpath;
    				$dirs_array[$dircounter]['stats'] = lstat($newpath);
    				$dirs_array[$dircounter]['text'] = '<img src="media/style/'.$manager_theme.'images/tree/folder.gif" border="0" align="absmiddle" alt="" /> <a href="index.php?a=31&mode=drill&path='.urlencode($newpath).'"><b>'.$file.'</b></a>';
    				$dirs_array[$dircounter]['delete'] = is_writable($curpath) ? '<span style="width:20px"><a href="index.php?a=31&mode=deletefolder&path='.urlencode($curpath).'&folderpath='.urlencode($newpath).'" onclick="return confirmDeleteFolder();"><img src="media/style/'.$manager_theme.'images/icons/delete.gif" alt="'.$_lang['file_delete_folder'].'" title="'.$_lang['file_delete_folder'].'" /></a></span>' : '';
    
    				// increment the counter
    				$dircounter++;
    			}  else {
    				$type=getExtension($newpath);
    				$files_array[$filecounter]['file'] = $newpath;
    				$files_array[$filecounter]['stats'] = lstat($newpath);
    				$files_array[$filecounter]['text'] = '<img src="media/style/'.$manager_theme.'images/tree/page-html.gif" border="0" align="absmiddle" alt="" />'.$file;
    				$files_array[$filecounter]['view'] = (in_array($type, $viewablefiles)) ?
    				'<span style="cursor:pointer; width:20px;" onclick="viewfile(\''.$webstart_path.substr($newpath, $len, strlen($newpath)).'\');"><img src="media/style/'.$manager_theme.'images/icons/context_view.gif" border="0" align="absmiddle" alt="'.$_lang['files_viewfile'].'" title="'.$_lang['files_viewfile'].'" /></span>' : (($enablefiledownload && in_array($type, $uploadablefiles))? '<a href="'.$webstart_path.implode('/', array_map('rawurlencode', explode('/', substr($newpath, $len, strlen($newpath))))).'" style="cursor:pointer; width:20px;"><img src="media/style/'.$manager_theme.'images/misc/ed_save.gif" border="0" align="absmiddle" alt="'.$_lang['file_download_file'].'" title="'.$_lang['file_download_file'].'" /></a>':'<span class="disabledImage"><img src="media/style/'.$manager_theme.'images/icons/context_view.gif" border="0" align="absmiddle" alt="'.$_lang['files_viewfile'].'" title="'.$_lang['files_viewfile'].'" /></span>');
    				$files_array[$filecounter]['view'] = (in_array($type, $inlineviewablefiles)) ? '<span style="width:20px;"><a href="index.php?a=31&mode=view&path='.urlencode($newpath).'"><img src="media/style/'.$manager_theme.'images/icons/context_view.gif" border="0" align="absmiddle" alt="'.$_lang['files_viewfile'].'" title="'.$_lang['files_viewfile'].'" /></a></span>' : $files_array[$filecounter]['view'] ;
    				$files_array[$filecounter]['unzip'] = ($enablefileunzip && $type=='.zip') ? '<span style="width:20px;"><a href="index.php?a=31&mode=unzip&path='.$curpath.'&file='.urlencode($file).'" onclick="return confirmUnzip();"><img src="media/style/'.$manager_theme.'images/icons/unzip.gif" border="0" align="absmiddle" alt="'.$_lang['file_download_unzip'].'" title="'.$_lang['file_download_unzip'].'" /></a></span>' : '' ;
    				$files_array[$filecounter]['edit'] = (in_array($type, $editablefiles) && is_writable($curpath) && is_writable($newpath)) ? '<span style="width:20px;"><a href="index.php?a=31&mode=edit&path='.urlencode($newpath).'#file_editfile"><img src="media/style/'.$manager_theme.'images/icons/save.png" border="0" align="absmiddle" alt="'.$_lang['files_editfile'].'" title="'.$_lang['files_editfile'].'" /></a></span>' : '<span class="disabledImage"><img src="media/style/'.$manager_theme.'images/icons/save.png" border="0" align="absmiddle" alt="'.$_lang['files_editfile'].'" title="'.$_lang['files_editfile'].'" /></span>';
    				$files_array[$filecounter]['delete'] = is_writable($curpath) && is_writable($newpath) ? '<span style="width:20px;"><a href="index.php?a=31&mode=delete&path='.urlencode($newpath).'" onclick="return confirmDelete();"><img src="media/style/'.$manager_theme.'images/icons/delete.gif" border="0" align="absmiddle" alt="'.$_lang['file_delete_file'].'" title="'.$_lang['file_delete_file'].'" /></a></span>' : '<span class="disabledImage"><img src="media/style/'.$manager_theme.'images/icons/delete.gif" border="0" align="absmiddle" alt="'.$_lang['file_delete_file'].'" title="'.$_lang['file_delete_file'].'" /></span>';
    
    				// increment the counter
    				$filecounter++;
    			}
    		}
    	}
    	$dir->close();
    
    	// dump array entries for directories
    	$folders = count($dirs_array);
    	sort($dirs_array); // sorting the array alphabetically (Thanks pxl8r!)
    	for($i=0; $i<$folders; $i++) {
    		$filesizes += $dirs_array[$i]['stats']['7'];
    		echo '<tr style="cursor:default;" onmouseout="setColor(this,0)" onmouseover="setColor(this,1)">';
    		echo '<td>',$dirs_array[$i]['text'],'</td>';
    		echo '<td>',$modx->toDateFormat($dirs_array[$i]['stats']['9']),'</td>';
    		echo '<td dir="ltr">',ufilesize($dirs_array[$i]['stats']['7']),'</td>';
    		echo '<td>';
    		echo $dirs_array[$i]['delete'];
    		echo '</td>';
    		echo '</tr>';
    	}
    
    	// dump array entries for files
    	$files = count($files_array);
    	sort($files_array); // sorting the array alphabetically (Thanks pxl8r!)
    	for($i=0; $i<$files; $i++) {
    		$filesizes += $files_array[$i]['stats']['7'];
    		echo '<tr onmouseout="setColor(this,0)" onmouseover="setColor(this,1)">';
    		echo '<td>',$files_array[$i]['text'],'</td>';
    		echo '<td>',$modx->toDateFormat($files_array[$i]['stats']['9']),'</td>';
    		echo '<td dir="ltr">',ufilesize($files_array[$i]['stats']['7']),'</td>';
    		echo '<td>';
    		echo $files_array[$i]['unzip'];
    		echo $files_array[$i]['view'];
    		echo $files_array[$i]['edit'];
    		echo $files_array[$i]['delete'];
    		echo '</td>';
    		echo '</tr>';
    	}
    
    
    	return;
    }
    echo '<br /><br />';
    ?>
    <table>
    <tr>
    <td style="width:300px;"><b><?php echo $_lang['files_filename']?></b></td>
    <td><b><?php echo $_lang['files_modified']?></b></td>
    <td><b><?php echo $_lang['files_filesize']?></b></td>
    <td><b><?php echo $_lang['files_fileoptions']?></b></td>
    </tr>
    <?php
    ls($startpath);
    echo "\n\n\n\n\n\n\n";
    if($folders==0 && $files==0) {
    	echo '<tr><td colspan="4"><img src="media/style/',$manager_theme,'images/tree/deletedfolder.gif" border="0" /><span style="color:#888;cursor:default;"> This directory is empty.</span></td></tr>';
    }
    ?></table><?php
    
    echo $_lang['files_directories'],': <b>',$folders,'</b><br />';
    echo $_lang['files_files'],': <b>',$files,'</b><br />';
    echo $_lang['files_data'],': <b><span dir="ltr">',ufilesize($filesizes),'</span></b><br />';
    echo $_lang['files_dirwritable'],' <b>',is_writable($startpath)==1 ? $_lang['yes'].'.' : $_lang['no'].'.'
    ?></b><br />
    <div align="center">
    <img src="<?php echo $_style['tx']; ?>" id="imageviewer" />
    </div>
    <br /><hr />
    <?php
    if (((@ini_get("file_uploads") == true) || get_cfg_var("file_uploads") == 1) && is_writable($startpath)) {
    	@ini_set("upload_max_filesize", $upload_maxsize); // modified by raymond
    ?>
    <form enctype="multipart/form-data" action="index.php?a=31" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo isset($upload_maxsize)? $upload_maxsize:1048576; ?>">
    <input type="hidden" name="path" value="<?php echo $startpath?>">
    
    <span style="width:300px;"><?php echo $_lang['files_uploadfile_msg']?></span>
    <input id="file_elem" type="file" name="bogus"  style="height: 19px;">
    
    <div id="files_list"></div>
    <script type="text/javascript">
    	var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 10 );
    	multi_selector.addElement( document.getElementById( 'file_elem' ) );
    </script>
    
    <input type="submit" value="<?php echo $_lang['files_uploadfile']?>">
    
    </form>
    
    
    <?php
    } else {
    	echo "<p>".$_lang['files_upload_inhibited_msg']."</p>";
    }
    ?>
    
    
    </div>
    
    <?php
    
    if($_REQUEST['mode']=="edit" || $_REQUEST['mode']=="view") {
    ?>
    
    <div class="sectionHeader" id="file_editfile"><?php echo $_REQUEST['mode']=="edit" ? $_lang['files_editfile'] : $_lang['files_viewfile']?></div>
    
    <div class="sectionBody">
    <?php
    $filename=$_REQUEST['path'];
    $handle = @fopen($filename, "r");
    // Log the change
    logFileChange('view', $filename);
    if(!$handle) {
    	echo 'Error opening file for reading.';
    	exit;
    } else {
    	while (!feof($handle)) {
    		$buffer .= fgets($handle, 4096);
    	}
    	fclose ($handle);
    }
    
    ?>
    <form action="index.php" method="post" name="editFile">
    <input type="hidden" name="a" value="31" />
    <input type="hidden" name="mode" value="save" />
    <input type="hidden" name="path" value="<?php echo $_REQUEST['path']?>" />
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><textarea dir="ltr" style="width:100%; height:370px;" name="content"><?php echo htmlentities($buffer,ENT_COMPAT,$modx_manager_charset)?></textarea></td>
      </tr>
    </table>
    </form>
    <?php
    
    if($_REQUEST['mode']=="edit") {
    ?>
    <br />
    <ul class="actionButtons">
    	<li><a href="#" onclick="document.editFile.submit();"><img src="<?php echo $_style["icons_save"] ?>" /> <?php echo $_lang['save']?></a></li>
    	<li><a href="index.php?a=31&path=<?php echo urlencode($_REQUEST['path'])?>"><img src="<?php echo $_style["icons_cancel"] ?>" /> <?php echo $_lang['cancel']?></a></li>
    </ul>
    <?php } ?>
    </div>
    <?php
    }
    ?>


    Regel 418 t/m 421 zijn hierin respectievelijk:

    $dir = dir($curpath);
    
    	// first, get info
    	while ($file = $dir->read()) {


    Hopelijk kan iemand me hiermee helpen, alvast bedankt!