Project

General

Profile

« Previous | Next » 

Revision 2090

Added by darkviper almost 11 years ago

! UpgradeHelper: added method delTree()
- templates/argos_theme
- templates/allcss
- templates/wb_theme
+ templates/WbTheme
! all upgrade/install and all other files needed to change defaults
  1. modules/MultiLingual/update_keys.php inactive lines of code removed

View differences:

UpgradeHelper.php
35 35
class UpgradeHelper {
36 36

  
37 37
/**
38
 * do not delete start directory of deltree
39
 */
40
	const DEL_ROOT_PRESERVE = 0;
41
/**
42
 * delete start directory of deltree
43
 */
44
	const DEL_ROOT_DELETE   = 1;
45
/**
46
 * clear logs
47
 */
48
	const LOG_CLEAR = true;
49
/**
50
 * preserve logs
51
 */
52
	const LOG_PRESERVE = false;
53
/**
54
 * to store the last delTree log
55
 */
56
	static $aDelTreeLog = array();
57

  
58
/**
38 59
 * Compare available tables against a list of tables
39 60
 * @param  array list of needed table names without TablePrefix
40 61
 * @return array list of missing tables
......
265 286
		}
266 287
		return false;
267 288
	}
289
/**
290
 * Delete all contents of basedir, but not the basedir itself
291
 * @param string  $sRootDir the content of which should be deleted
292
 * @param integer $iMode    the mode can be set to self::DEL_ROOT_PRESERVE(default) or self::DEL_ROOT_DELETE
293
 * @return boolean          false if a file or directory can't be deleted
294
 */
295
	static public function delTree($sRootDir, $iMode = self::DEL_ROOT_PRESERVE)
296
	{
297
		// check if root dir is inside the installation and is writeable
298
		$oReg = WbAdaptor::getInstance();
299
		self::$aDelTreeLog = array();
300
		$bResult = true;
301
		if (!is_writeable($sRootDir)) {
302
			self::$aDelTreeLog[] = str_replace($oReg->AppPath, '', $sRootDir);
303
			return false;
304
		}
305
		$oIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($sRootDir), RecursiveIteratorIterator::CHILD_FIRST);
306
		foreach ($oIterator as $oPath) {
307
			$sPath = rtrim(str_replace('\\', '/', $oPath->__toString()), '/');
308
			if ($oPath->isDir() && !preg_match('/\.$/s', $sPath)) {
309
				// proceed directories
310
				if (!rmdir($sPath)) {
311
					$bResult = false;
312
					self::$aDelTreeLog[] = str_replace($oReg->AppPath, '', $sPath);
313
				}
314
			} elseif ($oPath->isFile()) {
315
				// proceed files
316
				if (!unlink($sPath)) {
317
					$bResult = false;
318
					self::$aDelTreeLog[] = str_replace($oReg->AppPath, '', $sPath);
319
				}
320
			}
321
		}
322
		if (($iMode & self::DEL_ROOT_DELETE) && $bResult) {
323
        // delete RootDir if there was no error before
324
            if (!rmdir($sRootDir)) {
325
                $bResult = false;
326
                self::$aDelTreeLog[] = str_replace($oReg->AppPath, '', $sRootDir);
327
            }
328
		}
329
		return $bResult;
330
	}
331
/**
332
 * returns the log of the last delTree request
333
 * @param  bool  $bClearLog   TRUE clears the log after request, FALSE preserve the log
334
 * @return array
335
 */
336
	static public function getDelTreeLog($bClearLog = self::LOG_CLEAR)
337
	{
338
		$aRetval = self::$aDelTreeLog;
339
		if($bClearLog) { self::$aDelTreeLog = array(); }
340
		return $aRetval;
341
	}
268 342

  
343

  
269 344
} // end of class UpgradeHelper
270 345

  

Also available in: Unified diff