data['server'] = $attr['HOST']; } function element_start($parser, $name, $attr) { switch ($name) { case 'AVAILSTRING': xml_set_character_data_handler($parser, $this->getCallBack('setString')); break; case 'DOMAIN': $obj = &new Domain_Parser($this, $attr, $this); $obj->setHandler($parser); break; default: return; } } function addDomain(&$domain) { $this->domains[] = &$domain; } function setString($parser, $string) { $this->data['string'] = $string; xml_set_character_data_handler($parser, $this->getCallBack('element_cdata')); } function getName() { return 'SERVER'; } function final() { if (!isset($this->data['string']) || count($this->domains) == 0) { return; } $db = &new DB_Element($this->data, 'server'); $db->save('server'); if (!$db->save('server')) { return false; } $savedDomains = false; foreach ($this->domains as $domain) { if (!$domain->save('tld')) { continue; } $ref = &new DB_Element(array('tld_id' => $domain->getID(), 'server_id' => $db->getID()), 'tld_server'); $ref->insert(); $savedDomains = true; } if (!$savedDomains) { $db->delete(); } } } ?>