public function refresh_assignments($mode_create = true) { $id_user = $this->id_user; $assign_hfs = new assign_hf(); $curr_assign_hfs = $assign_hfs->get_from_hashrange($id_user, $this->id, "BEGINS_WITH"); if ($curr_assign_hfs && count($curr_assign_hfs) > 0) { foreach ($curr_assign_hfs as $curr_assign_hf) { $del_assign_hf = new assign_hf(); $del_assign_hf->set($curr_assign_hf); if ($del_assign_hf->id_user != "undefined") { $del_assign_hf->delete(); } $curr_assign_hf_split = explode("@", $curr_assign_hf['hf_server']); if ($curr_assign_hf_split) { $curr_svr = $curr_assign_hf_split[1]; $curr_hf = $curr_assign_hf_split[0]; $del_assign_svr = new assign_server(); $del_assign_svr->get_from_hashrange($id_user, $curr_svr . '@' . $curr_hf); if ($del_assign_svr->id_user != "undefined") { $del_assign_svr->delete(); } } } } if (!$mode_create) { return; } $user_servers = new user_server(); $server_list = $user_servers->get_from_hashrange($this->id_user); $list_of_eligible_servers = array(); if ($server_list && is_array($server_list)) { foreach ($server_list as $server_entry) { $passed_filter = false; if (isset($this->obj_hf_node_filters) && $this->obj_hf_node_filters) { if (count($this->obj_hf_node_filters) > 0) { $passed_filter = false; foreach ($this->obj_hf_node_filters as $node_filter) { if (strpos($server_entry['name'], $node_filter->value) !== FALSE) { $passed_filter = true; break; } } // end foreach (each filter) } else { $passed_filter = true; } } else { $passed_filter = true; } if ($passed_filter) { if (isset($this->obj_hf_system_kind) && $this->obj_hf_system_kind) { $found_matched_sk = false; foreach ($this->obj_hf_system_kind as $hsk) { if ($hsk->id_sk == $server_entry['id_sk'] || $hsk->id_sk == "any") { if (!isset($hsk->obj_enabled) || isset($hsk->obj_enabled) && $hsk->obj_enabled) { $found_matched_sk = true; break; } } } if (count($this->obj_hf_system_kind) == 0) { $found_matched_sk = true; } if (!$found_matched_sk) { $passed_filter = false; } } } if ($passed_filter) { $new_assign_hf = new assign_hf(); $new_assign_hf->create(array("id_user" => $id_user, "hf_server" => $this->id . "@" . $server_entry['name'])); $new_assign_svr = new assign_server(); $new_assign_svr->create(array("id_user" => $id_user, "server_hf" => $server_entry['name'] . "@" . $this->id)); } else { } } // end for } // end if (any servers) }