function fetch_records($id_domain)
 {
     log_write("debug", "api_namedmanager", "Executing fetch_records()");
     if ($this->auth_online) {
         // verify input
         $id_domain = @security_script_input_predefined("int", $id_domain);
         if (!$id_domain || $id_domain == "error") {
             throw new SoapFault("Sender", "INVALID_INPUT");
         }
         // verify domain
         $obj_domain = new domain();
         $obj_domain->id = $id_domain;
         if (!$obj_domain->verify_id()) {
             throw new SoapFault("Sender", "INVALID_INPUT");
         }
         // if querying for a name server, we filter the NS records
         // to only members of that name server group.
         if ($this->auth_group) {
             $group_nameservers = array();
             $obj_ns_sql = new sql_query();
             $obj_ns_sql->string = "SELECT server_name FROM name_servers WHERE id_group='" . $this->auth_group . "' AND server_record='1'";
             $obj_ns_sql->execute();
             $obj_ns_sql->fetch_array();
             foreach ($obj_ns_sql->data as $data_ns) {
                 $group_nameservers[] = $data_ns["server_name"];
             }
             unset($obj_ns_sql);
         }
         // fetch domain records
         $obj_domain->load_data_record_all();
         if ($obj_domain->data["records"]) {
             foreach ($obj_domain->data["records"] as $data_record) {
                 // filter to NS records that apply for the selected domain group only
                 if ($this->auth_group) {
                     if ($data_record["type"] == "NS") {
                         if (!in_array($data_record["content"], $group_nameservers)) {
                             // Current NS record isn't in the domain group list. If the nameserver exists in
                             // other domain groups, we should exclude it to avoid contaminating across groups.
                             //
                             // However if the nameserver does *not* exist in NamedManager, then it must be an
                             // NS record for an external domain, so we should include it, so that external
                             // delegation works correcty.
                             $obj_ns_sql = new sql_query();
                             $obj_ns_sql->string = "SELECT id FROM name_servers WHERE server_name='" . $data_record["content"] . "' LIMIT 1";
                             $obj_ns_sql->execute();
                             if ($obj_ns_sql->num_rows()) {
                                 // nameserver exists in other groups, we should exclude this NS record.
                                 continue;
                             }
                         }
                     }
                 }
                 // add record to return array
                 $return_tmp = array();
                 $return_tmp["id_record"] = $data_record["id_record"];
                 $return_tmp["record_name"] = $data_record["name"];
                 $return_tmp["record_type"] = $data_record["type"];
                 $return_tmp["record_content"] = $data_record["content"];
                 $return_tmp["record_ttl"] = $data_record["ttl"];
                 $return_tmp["record_prio"] = $data_record["prio"];
                 $return[] = $return_tmp;
             }
             return $return;
         }
         return 0;
     } else {
         throw new SoapFault("Sender", "ACCESS_DENIED");
     }
 }
     $_SESSION["error"]["form"]["domain_records"] = "failed";
     header("Location: ../index.php?page=domains/records.php&id=" . $obj_domain->id . "");
     exit(0);
 }
 /*
 	Transaction Start
 */
 $sql_obj = new sql_query();
 $sql_obj->trans_begin();
 /*
 	Update Domain
 */
 log_write("debug", "process", "Updating main domain");
 // fetch all DNS records
 $obj_domain->load_data();
 $obj_domain->load_data_record_all();
 // update records
 foreach ($data["records"] as $record) {
     if (!empty($record["mode"])) {
         $obj_record = new domain_records();
         $obj_record->id = $obj_domain->id;
         $obj_record->data = $obj_domain->data;
         // copy domain data from existing object to save time & SQL queries
         $obj_record->id_record = $record["id"];
         $obj_record->load_data_record();
         // load record data
         if ($record["mode"] == "update") {
             // data sent through, we should update an existing record. But first, let's check if we actually need to
             // make a change or not.
             if ($obj_record->data_record["name"] != $record["name"] || $obj_record->data_record["type"] != $record["type"] || $obj_record->data_record["content"] != $record["content"] || $obj_record->data_record["ttl"] != (int) $record["ttl"] || $obj_record->data_record["prio"] != (int) $record["prio"] || $record["reverse_ptr"] != $record["reverse_ptr_orig"]) {
                 /*