public function build($obj_build_exclude = array(), $do_substitutions = true) { if ($this->obj_debug) { echo "building parent HF_ID_USER...\n"; } parent::build($obj_build_exclude); if ($this->obj_debug) { echo "finished building parent...\n"; } if (!isset($this->obj_expression)) { //echo "SETTING EXPRESSION"; $this->obj_expression = new strings(); } $this->obj_hf_inherit = array(); $this->obj_hf_parameters = array(); $this->obj_hf_node_filters = array(); $this->obj_hf_tags = array(); $this->obj_hf_outputs = array(); $this->obj_hf_files = array(); $this->obj_hf_kill = array(); $this->obj_hf_resources = array(); $this->obj_hf_system_kind = array(); // MANY TO 1 RELATIONSHIPS if ($this->obj_debug) { echo "hf inherits...\n"; } $hf_inherit = new hf_inherit(); $all_hf_inherit = $hf_inherit->get_from_hashrange($this->id); if ($all_hf_inherit && !in_array("obj_hf_inherit", $obj_build_exclude)) { foreach ($all_hf_inherit as $each_hf_inherit) { $a_hf_inherit = new hf_inherit(); $a_hf_inherit->set($each_hf_inherit); $a_hf_inherit->build(); $this->obj_hf_inherit[] = $a_hf_inherit; } } if ($this->obj_debug) { echo "hf parameters...\n"; } $hf_parameter = new hf_parameter(); $all_hf_parameters = $hf_parameter->get_from_hashrange($this->id); if ($all_hf_parameters && !in_array("obj_hf_parameters", $obj_build_exclude)) { foreach ($all_hf_parameters as $each_hf_parameter) { $a_hf_parameter = new hf_parameter(); $a_hf_parameter->set($each_hf_parameter); $a_hf_parameter->build(); $this->obj_hf_parameters[] = $a_hf_parameter; } foreach ($this->obj_hf_parameters as &$a_hf_parameter) { $a_hf_parameter->merge($this->obj_hf_parameters); } } if ($this->obj_debug) { echo "hf resource...\n"; } $hf_resource = new hf_resource(); $all_hf_resource = $hf_resource->get_from_hashrange($this->id); if ($all_hf_resource && !in_array("obj_hf_resources", $obj_build_exclude)) { foreach ($all_hf_resource as $each_hf_resource) { $a_hf_resource = new hf_resource(); $a_hf_resource->set($each_hf_resource); $a_hf_resource->build(); $a_hf_resource->subs = $this->name; $this->obj_hf_resources[] = $a_hf_resource; } } if ($do_substitutions) { $this->int_maxruntime_value = replace_hf_parameters($this->int_maxruntime, $this->obj_hf_parameters); } else { $this->int_maxruntime_value = $this->int_maxruntime; } if ($this->obj_debug) { echo "hf node filters...\n"; } $hf_node_filter = new hf_node_filter(); $all_hf_node_filters = $hf_node_filter->get_from_hashrange($this->id); if ($all_hf_node_filters && !in_array("obj_hf_node_filters", $obj_build_exclude)) { foreach ($all_hf_node_filters as $each_hf_node_filter) { $a_hf_node_filter = new hf_node_filter(); $a_hf_node_filter->set($each_hf_node_filter); $a_hf_node_filter->build(); $this->obj_hf_node_filters[] = $a_hf_node_filter; } } foreach ($this->obj_hf_node_filters as &$a_hf_node_filter) { if ($do_substitutions) { $a_hf_node_filter->value = replace_hf_parameters($a_hf_node_filter->obj_filter->body, $this->obj_hf_parameters); } else { $a_hf_node_filter->value = $a_hf_node_filter->obj_filter->body; } } if ($this->obj_debug) { echo "hf tags...\n"; } $hf_tag = new hf_tag(); $all_hf_tags = $hf_tag->get_from_hashrange($this->id); if ($all_hf_tags && !in_array("obj_hf_tags", $obj_build_exclude)) { foreach ($all_hf_tags as $each_hf_tag) { $a_hf_tag = new hf_tag(); $a_hf_tag->set($each_hf_tag); $a_hf_tag->build(); $this->obj_hf_tags[] = $a_hf_tag; } } if ($this->obj_debug) { echo "hf file...\n"; } $hf_file = new hf_file(); $all_hf_files = $hf_file->get_from_hashrange($this->id); if ($all_hf_files && !in_array("obj_hf_files", $obj_build_exclude)) { foreach ($all_hf_files as $each_hf_file) { $a_hf_file = new hf_file(); $a_hf_file->set($each_hf_file); $a_hf_file->build(); $this->obj_hf_files[] = $a_hf_file; } } foreach ($this->obj_hf_files as &$a_hf_file) { if ($do_substitutions) { $a_hf_file->value = replace_hf_parameters($a_hf_file->obj_targetfile->body, $this->obj_hf_parameters); } else { $a_hf_file->value = $a_hf_file->obj_targetfile->body; } } if ($this->obj_debug) { echo "hf kill...\n"; } $hf_kill = new hf_kill(); $all_hf_kill = $hf_kill->get_from_hashrange($this->id); if ($all_hf_kill && !in_array("obj_hf_kill", $obj_build_exclude)) { foreach ($all_hf_kill as $each_hf_kill) { $a_hf_kill = new hf_kill(); $a_hf_kill->set($each_hf_kill); $a_hf_kill->build(); $this->obj_hf_kill[] = $a_hf_kill; } } foreach ($this->obj_hf_kill as &$a_hf_kill) { if ($do_substitutions) { $a_hf_kill->value = replace_hf_parameters($a_hf_kill->obj_name->body, $this->obj_hf_parameters); } else { $a_hf_kill->value = $a_hf_kill->obj_name->body; } } foreach ($this->obj_hf_resources as &$a_hf_resource) { if ($do_substitutions) { $a_hf_resource->value_location = replace_hf_parameters($a_hf_resource->obj_location->body, $this->obj_hf_parameters); $a_hf_resource->value_filename = replace_hf_parameters($a_hf_resource->obj_filename->body, $this->obj_hf_parameters); } else { $a_hf_resource->value_location = $a_hf_resource->obj_location->body; $a_hf_resource->value_filename = $a_hf_resource->obj_filename->body; } } if ($this->obj_debug) { echo "hf system kinds...\n"; } $hf_system_kind = new hf_system_kind(); $all_hf_system_kind = $hf_system_kind->get_from_hashrange($this->id); if ($all_hf_system_kind && !in_array("obj_hf_system_kind", $obj_build_exclude)) { foreach ($all_hf_system_kind as $each_hf_system_kind) { $a_hf_system_kind = new hf_system_kind(); $a_hf_system_kind->set($each_hf_system_kind); $a_hf_system_kind->build(); $this->obj_hf_system_kind[] = $a_hf_system_kind; } } if ($this->obj_debug) { echo "hf assimilation...\n"; } // ASSIMILATE PARENT INHERITANCE foreach ($this->obj_hf_inherit as $hf_inherit) { // RECURSIVELY ASSIMILATE THE PARENT FUNCTION $hf_inherit->assimilate($this, $obj_build_exclude); } $local_sk_found = false; foreach ($this->obj_hf_system_kind as &$tsk) { if ($tsk->id_hf == $this->id) { $local_sk_found = true; break; } } if ($local_sk_found) { foreach ($this->obj_hf_system_kind as &$tsk) { if ($tsk->id_hf != $this->id) { $tsk->obj_enabled = false; } } } /* if ($do_substitutions) { echo "<pre>"; print_r($this); } */ $this->obj_bool_inheritable = false; $hf_inheritable = new user_inherit(); $hf_inheritable->get_from_hashrange($this->id_user, $this->id); if ($hf_inheritable->id_user != "undefined") { $this->obj_bool_inheritable = true; } // BUILD RECURSIVE EXPRESSION TREE if ($this->obj_debug) { echo "building hash expression tree"; } $this->hash_to_expression_tree($this->str_expression, $do_substitutions); if (isset($this->obj_hf_parameters)) { if ($this->obj_debug) { echo "merging expressions"; } if (isset($this->obj_expression) && !is_bool($this->obj_expression) && get_class($this->obj_expression) == "strings") { $this->obj_expression->merge($this->obj_hf_parameters); } } if ($this->obj_debug) { echo "finished building function"; } }