# Php text edit class

**URL:** <https://forum.kirupa.com/t/php-text-edit-class/276481>\
**Category:** Uncategorized\
**Created:** [November 28, 2008, 10:03am UTC](https://forum.kirupa.com/t/php-text-edit-class/276481 "2008-11-28T10:03:06Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![zsolt](https://avatars.discourse-cdn.com/v4/letter/z/58956e/32.png) [@zsolt](https://forum.kirupa.com/u/zsolt)\
**Post date:** [November 28, 2008, 10:03am UTC](https://forum.kirupa.com/t/php-text-edit-class/276481/1 "2008-11-28T10:03:06Z")

</div>

Hello

I need some help please  
There is a php class witch can edit text files and save these  
I would like to implement the save as button, but with no success.  
Can smomeone figure out how to do it?

Thanks  
Zsolt

class

```php

<?php

class XmlEditor
{
	// variables:    
	var $folder;
	var $fileName;
	var $fileContent;
	var $fileList;
	
	
/ ******************************************************************************
 * XmlEditor
 * Constructor
 * 
 ****************************************************************************** /
    function XmlEditor($folder, $fileName, $newFileName, $fileContent, $submitSaveFile, $submitSaveFileAs)
    {
		$this->folder = $folder;
		
		$this->fileName = $_POST[$fileName];
		$this->fileContent = $_POST[$fileContent];
		
		$newFileName = $_POST[$newFileName];
		$submitSaveFile = $_POST[$submitSaveFile];
		$submitSaveFileAs = $_POST[$submitSaveFileAs];
		
	
		//Read/Write file content		
		if ( (isset($this->fileName)) && (strlen($this->fileName) > 0) )
		{
			if ( isset($this->fileContent) )
			{
				if ( isset($submitSaveFile) )
				{	$this->SaveFile($this->fileName, $this->fileContent);	}
				if ((isset($submitSaveFileAs)) && (isset($newFileName)))
				{
					$this->SaveFile($newFileName, $this->fileContent);
					$this->fileName = $newFileName;
				}
			}
			$this->fileContent = $this->LoadFile( $this->fileName );
		}
		else
		{	$this->fileContent = "Select a file";	}

		//Get list of files as dd options
		$this->fileList = $this->ShowFiles( $this->fileName );
	}
	

/ ******************************************************************************
 * ShowFiles
 * Public
 * 
 ****************************************************************************** /
	function ShowFiles()
	{
		$files = $this->GetFiles( );
		sort($files);
		return $this->MakeDDOptions($files, $this->fileName );
	}
	
/ ******************************************************************************
 * LoadFile
 * Public
 * 
 ****************************************************************************** /
    function LoadFile($filename)
    {
        //Read the file
        if ((! isset($filename))||('-1' == $filename))
        { return 'Select a File'; }							
        if (! file_exists($filename) )
        { echo "ERROR: File \"$filename\" is not present"; return false;	}
        if (! $file = fopen($filename,'r') )
        { echo "ERROR: File \"$filename\" is present, but could not be opened for read";	return false;	}
        $string = '';
        while ( $eachline = fgets($file,10000) )
        { $string .= $eachline; }
        fclose($file);
        return htmlspecialchars($string);
    }
    
/ ******************************************************************************
 * SaveFile
 * Public
 * 
 ****************************************************************************** /
    function SaveFile($filename, $content)
    {
        //Overwrite the file
        if (-1 == $filename)
        {
            echo "ERROR: No file selected - try using the 'Save As...' button";  
            return false;   
        }
        if (! $file = fopen($filename,'w') )
        {
        	return false;
        }
        fputs($file,$content);
        fclose($file);
		return true;
    }
    
/ ******************************************************************************
 * GetFiles
 * Private
 * 
 ****************************************************************************** /
	function GetFiles()
	{	
		$files = array();
		if (! $dir = opendir($this->folder)) 
		{
			print "Error: Could not open dir '$this->folder'<br>";
			return $files;
		}
		while (($file = readdir($dir)) !== false) 
		{
			if (! is_dir($file) )
			{	array_push($files, $file);	}
		}
	  	closedir($dir);
		return $files;
	}
	function MakeDDOptions( $array, $selected )
	{
		if (! isset($selected) )
		{	$selected = -1;	}
		$html = '';
		while( list($key,$value) = each($array) ) 
		{	$html .= $this->MakeDDOption( ereg_replace(".xml", "", $value), $this->folder.'/'.$value, $selected);	}
		return $html;
	}
	function MakeDDOption($name, $value, $selected)
	{
		if ($value == $selected)
		{	return '<option selected value="'.$value.'">'.$name.'</option>'."
";	}
		else
		{	return '<option value="'.$value.'">'.$name.'</option>'."
";	}
	}
}
?>

```

edit.php

```php

<?php
include("class.XmlEditor.php");
$XmlEditor = new XmlEditor('../xml', 'fileName', 'newFileName', 'fileContent', 'submitSaveFile', 'submitSaveFileAs');
//Folder, followed by names of the form elements
?>
<html>
<HEAD>
    <TITLE>Web Site Administration</TITLE>
	<link rel="stylesheet" href="layout.css" />
</HEAD>
<body>

    <form name=form1 id=form1 method=post>
	<h1>Web Site Administration</h1>

	
<!-- Choose a file to edit -->

    <div class="row">
    <h2>Choose the page to edit here:</h2>
    <select name="fileName" onChange="submitLoadFile.click()">
        <option value="-1">Select a File</option>
        <?=$XmlEditor->fileList ?>
      </select>
      <input type="hidden" name="newFileName" value="" />
      <input type="submit" name="submitLoadFile" value="loadfile" class="hidden" />
    </div> 
    
    <!-- Edit Content of the file -->
    
    <div class="row">  	  
        <h2>Edit the content here:</h2>
        <div class="topleft">
        	<div class="topright">
        		<div class="toptile">&nbsp;</div>
        	</div>
        </div>
        <div class="leftedge">
        	<div class="rightedge">
        		<div class="content">
        		<textarea name="fileContent"><?=$XmlEditor->fileContent?></textarea>
        		</div>
        	</div>
        </div>	
        <div class="baseleft">
        	<div class="baseright">
        		<div class="basetile">&nbsp;</div>
        	</div>
        </div>
    </div>
    
    <div class="row">
    <span class="right">
    <input class="button" type="submit" value="Save File" name="submitSaveFile" />
    </span>
    </div>
    </form>
</body>
</html>

```
