Project

General

Profile

« Previous | Next » 

Revision 1949

Added by darkviper about 11 years ago

updated for some corrections in class AccessFile

View differences:

AccessFile.php
131 131

  
132 132
	/**
133 133
	 * Rename an existing Accessfile
134
	 * @param string the new filename without path and without extension
134
	 * @param  string  $sNewName the new filename without path and without extension
135 135
	 * @return boolean
136 136
	 * @throws AccessFileInvalidFilenameException
137 137
	 * @throws AccessFileAlreadyExistsException
......
140 140
	public function rename($sNewName)
141 141
	{
142 142
		// sanitize new filename
143
		if (!preg_match('/[^\.\\\/]*/si', $sNewName)) {
144
			throw new AccessFileInvalidFilenameException('invalid filename [' . $sNewName . ']');
143
		if (!preg_match('/[^\.\\ \/]*/si', $sNewName)) {
144
			throw new AccessFileInvalidFilenameException('invalid filename [' . str_replace($this->_oReg->AppPath, '', $sNewName) . ']');
145 145
		}
146 146
		// prepare old/new file-/dirname
147
		$sOldFilename = $this->_sFileName;
147
		$sOldFilename   = $this->_sFileName;
148 148
		$sOldSubDirname = dirname($sOldFilename) . '/';
149
		$sBaseDirname   = dirname($sOldSubDirname) . '/';
149 150
		$sPattern = '/^(' . preg_quote($sOldSubDirname, '/') . ')([^\/\.]+?)(\.[a-z0-9]+)$/siU';
150 151
		$sNewFilename = preg_replace($sPattern, '\1' . $sNewName . '\3', $sOldFilename);
151 152
		$sNewSubDirname = dirname($sNewFilename) . '/';
152 153
		if (file_exists($sNewFilename) || file_exists($sNewSubDirname)) {
153
			// check if new filename already exists
154
			throw new AccessFileAlreadyExistsException('new file/dirname already exists [' . $sNewName . ']');
154
			// if new filename or directory already exists
155
			throw new AccessFileAlreadyExistsException('new file/dirname already exists [' . str_replace($this->_oReg->AppPath, '', $sNewName) . ']');
155 156
		}
156
		// try to rename a depending subdirectory
157
		$bSubdirRenamed = false;
158
		$bRetval = true;
159
		if (file_exists($sOldSubDirname))
160
		{
161
			// old subdir exists but is it writeable?
162
			if (($bRetval = is_writable($sOldSubDirname)))
157
		if(!is_writeable($sOldFilename)) {
158
			throw new AccessFileRenameException('unable to rename file or file not exists [' . str_replace($this->_oReg->AppPath, '', $sOldFilename) . ']');
159
		}
160
		$bSubdirRenamed = false; // set default value
161
		if(file_exists($sOldSubDirname))
162
		{ //
163
			if(is_writeable($sOldSubDirname))
163 164
			{
164
				if (rename($sOldSubDirname, $sNewSubDirname)) {
165
					$bRetval = $bSubdirRenamed = true;
165
				if(!( $bSubdirRenamed = rename($sOldSubDirname, $sNewSubDirname))) {
166
					throw new AccessFileRenameException('unable to rename directory [' . str_replace($this->_oReg->AppPath, '', $sOldSubDirname) . ']');
166 167
				}
168
			} else {
169
				throw new AccessFileRenameException('directory is not writeable [' . str_replace($this->_oReg->AppPath, '', $sOldSubDirname) . ']');
167 170
			}
168 171
		}
169
		if (!$bRetval) {
170
			// if old subdir exists and renaming failed
171
			throw new AccessFileRenameException('unable to rename directory [' . $sOldSubDirname . ']');
172
		// try to rename accessfile
173
		if(!rename($sOldFilename, $sNewFilename)) {
174
			if($bSubdirRenamed) { rename($sNewSubDirname, $sOldSubDirname); }
175
			throw new AccessFileRenameException('unable to rename file [' . str_replace($this->_oReg->AppPath, '', $sOldFilename) . ']');
172 176
		}
173
		if (($bRetval = is_writeable($this->_sFileName))) {
174
			// try to rename accessfile
175
			$bRetval = rename($sOldFilename, $sNewFilename);
176
		}
177
		if (!$bRetval)
178
		{
179
			if ($bSubdirRenamed) {
180
				// on error undo renaming of subdir
181
				rename($sNewSubDirname, $sOldSubDirname);
182
			}
183
			throw new AccessFileRenameException('unable to rename file [' . $sOldFilename . ']');
184
		}
177
		return true;
185 178
	}
186 179

  
187 180
	/**
......
337 330
	{
338 331
		$sFileContent
339 332
				= '<?php' . "\n"
340
				. '// *** This file is generated by ' . $this->_oReg->AppName
341
				. ' Ver.' . $this->_oReg->AppVersion
342
				. ($this->_oReg->AppServicePack != '' ? $this->_oReg->AppServicePack : '')
333
				. '// *** This file was created automatically by ' ."\n"
334
				. '// *** ' . $this->_oReg->AppName	. ' Ver.' . $this->_oReg->AppVersion
335
				. ($this->_oReg->AppServicePack != '' ? ' '.$this->_oReg->AppServicePack : '')
343 336
				. ' Rev.' . $this->_oReg->AppRevision . "\n"
344
				. '// *** Creation date: ' . date('c') . "\n"
345
				. '// *** Do not modify this file manually' . "\n"
346
				. '// *** This file will be rebuild from time to time!!' . "\n"
347
				. '// *** Then all manual changes will get lost!! ' . "\n"
348
				. '// *************************************************' . "\n";
337
				. '// *** on ' . date('c') . "\n"
338
				. '//' . "\n"
339
				. '// *** Warning *************************************' . "\n"
340
				. '// *** Please do not manually change this file!' . "\n"
341
				. '// *** It will be recreated from time to time and' . "\n"
342
				. '// *** then all manual changes will get lost!!' . "\n"
343
				. '// *************************************************' . "\n"
344
				. '//' . "\n";
349 345
		foreach ($this->_aVars as $sKey => $sVar) {
350 346
			$sFileContent .= "\t" . '$' . $sKey . ' = ' . $sVar . ';' . "\n";
351 347
		}
352 348
		foreach ($this->_aConsts as $sKey => $sVar) {
353
			$sFileContent .= "\t" . 'define(\'' . $sKey . '\', ' . $sVar . '); // *deprecated command*' . "\n";
349
			$sFileContent .= "\t" . 'define(\'' . $sKey . '\', ' . $sVar . '); // ** deprecated command **' . "\n";
354 350
		}
355 351
		$sFileContent
356
				.= "\t" . 'require(\'' . $sIndexFile . '\');' . "\n"
352
				.="\t" . 'require(\'' . $sIndexFile . '\');' . "\n"
353
				. "\t" . 'exit(0);' . "\n"
357 354
				. '// *************************************************' . "\n"
358 355
				. '// end of file' . "\n";
359 356

  
......
381 378
class AccessFileException extends Exception { }
382 379
class AccessFileConstForbiddenException extends AccessFileException { }
383 380
class AccessFileInvalidFilePathException extends AccessFileException { }
381
class AccessFileInvalidFilenameException extends AccessFileException { }
384 382
class AccessFileAlreadyExistsException extends AccessFileException { }
385 383
class AccessFileNotWriteableException extends AccessFileException { }
386 384
class AccessFileIsInvalidFilenameException extends AccessFileException { }
387 385
class AccessFileIsNoAccessfileException extends AccessFileException { }
388 386
class AccessFileInvalidStructureException extends AccessFileException { }
387
class AccessFileRenameException extends AccessFileException { }

Also available in: Unified diff