<?

// управление всеми этапами

class Ui_steps_story {
	
	public $steps;
	
	function __construct() {
		
		$this->steps = false;

		foreach(Steps_info::$data as $step_name=>$param) {
			$step = new Ui_step($step_name);
			
			$fields = Steps_info::fields($step_name);
			foreach($fields as $obj_name) {
				$step ->add($obj_name);
			}
			
			$this->steps[$step_name] = $step;
		}
	}
	
	/*
	// $names_str - одно или несколько имен через пробел
	public function enabled($names_str, $is_enabled) {
		if($names_str == 'all') {
			$mas = array_keys($this->steps);
		}
		else {
			$mas = explode(" ", trim($names_str));
		}
		
		// используем все группы
		foreach($mas as $group_name) {
			$group = $this->steps[$group_name];
			
			$group->enabled = $is_enabled;
		}
	}*/
	

	function apply_changed() {
		foreach($this->steps as $name=>$group) {
			$group->apply_changed();
		}
	}

	// иногда нужно поработаботать напрямую с этапом
	function get_step($name) {
		return $this->steps[$name];
	}
	
	// пропускаем группы идущие после указанной
	public function done_up_step($name_stop) {
		GLOBAL $log;
		
		foreach($this->steps as $name=>$group) {
			if($name == $name_stop) 
				break;
			
			$group->done();
		}
	}
	
	// $name = all | имя_группы
	public function future($name) {
		if($name == 'all') {
			foreach($this->steps as $name=>$group) {
				$group->future();
			}
		}
		else {
			$this->steps[$name]->future();
		}
	}
	
	public function cur($name) {
		if(!$name or !$this->steps[$name]) {
			Error::view("Не указан или неправилен параметр name= '$name'", 'Ui_steps_story::cur()');
			return false;
		}
		$this->steps[$name]->cur();
	}
}



?>