Location: PHPKode > projects > psDarBackup > psDarBackup-1.1/class.backupDirectory.php5
<?php

	class BackupDirectory {
	
		private $name;
		private $path;
		private $incremental;
		private $full;
		private $size;
		
		private static $psDarBackup;
		
		public function __construct($name, $path, $incremental, $full) {
			
			$this->name = $this->validateName($name);
			$this->path = $this->validatePath($path);
			$this->incremental = $this->validateBackupSetting($incremental);
			$this->full = $this->validateBackupSetting($full);
			$this->size = disk_total_space($this->path);
			
		}
		
		/**
		 * setzt die Referenz auf das BackupScript
		 */
		public static function setPsDarBackup($psDarBackup) {
			self::$psDarBackup = $psDarBackup;
		}
		
		public function getName() {
			return $this->name;
		}
		
		public function getPath() {
			return $this->path;
		}
		
		public function getIncremental() {
			return $this->incremental;
		}
		
		public function getFull() {
			return $this->full;
		}
		
		/**
		 * validiert den Namen
		 */
		private function validateName($name) {
			
			if(is_null($name))
				throw new ConfigException('Sie muessen in jedem Directory-Tag das "name"-Attribut setzen.');
			
			if(!preg_match('#^[a-z0-9\._\-]+$#', $name))
				throw new ConfigException('Der Backupname darf nur alphanumerische Zeichen, sowie Unter-, Bindestriche und Punkte enthalten.');
			
			return $name;
						
		}
		
		/**
		 * validiert den Pfad
		 */
		private function validatePath($path) {
			
			if(is_null($path))
				throw new ConfigException('Sie muessen in jedem Directory-Tag das "path"-Attribut setzen.');
				
			if(!is_dir($path))
				throw new ConfigException('Das Verzeichnis "' . $path . '" konnte nicht gefunden werden!');
			
			self::$psDarBackup->correctPath($path);
			
			return $path;
			
		}
		
		/**
		 * validiert die Werte der Attribute "incr" und "full"
		 */
		private function validateBackupSetting($setting) {
			
			if(is_null($setting))
				$setting = 'yes';
			
			if(!in_array($setting, array('yes', 'no')))
				throw new ConfigException('Die directory-Attribute "full" und "incr" duerfen als Werte nur "yes" oder "no" enthalten.');
			
			return $setting;
		}
		
		/**
		 * gibt den Speicherplatz zurück, den das Verzeichnis belegt
		 */
		public function getSize() {
			
			return $this->size;
			
		}
		
	}

?>
Return current item: psDarBackup