Exemple #1
0
 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)
 }