/** * Parse the provided xml * * @param string $xml * @return FileMakerException|boolean * @throws FileMakerException */ public function parse($xml) { if (empty($xml)) { $error = new FileMakerException($this->_fm, 'Did not receive an XML document from the server.'); if ($this->_fm->getProperty('errorHandling') === 'default') { return $error; } throw $error; } $this->_xmlParser = xml_parser_create('UTF-8'); xml_set_object($this->_xmlParser, $this); xml_parser_set_option($this->_xmlParser, XML_OPTION_CASE_FOLDING, false); xml_parser_set_option($this->_xmlParser, XML_OPTION_TARGET_ENCODING, 'UTF-8'); xml_set_element_handler($this->_xmlParser, '_start', '_end'); xml_set_character_data_handler($this->_xmlParser, '_cdata'); if (!@xml_parse($this->_xmlParser, $xml)) { $error = new FileMakerException($this->_fm, sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($this->_xmlParser)), xml_get_current_line_number($this->_xmlParser))); if ($this->_fm->getProperty('errorHandling') === 'default') { return $error; } throw $error; } xml_parser_free($this->_xmlParser); if (!empty($this->_errorCode)) { $error = new FileMakerException($this->_fm, null, $this->_errorCode); if ($this->_fm->getProperty('errorHandling') === 'default') { return $error; } throw $error; } if (version_compare($this->_serverVersion['version'], FileMaker::getMinServerVersion(), '<')) { $error = new FileMakerException($this->_fm, 'This API requires at least version ' . FileMaker::getMinServerVersion() . ' of FileMaker Server to run (detected ' . $this->_serverVersion['version'] . ').'); if ($this->_fm->getProperty('errorHandling') === 'default') { return $error; } throw $error; } $this->_isParsed = true; return true; }
//error_reporting(E_ALL); use airmoi\FileMaker\FileMaker; use airmoi\FileMaker\FileMakerException; use airmoi\FileMaker\FileMakerValidationException; require __DIR__ . '/../autoloader.php'; echo "==========================================" . PHP_EOL; echo " FILEMAKER API UNIT TEST" . PHP_EOL; echo "==========================================" . PHP_EOL . PHP_EOL; try { echo "------------------------------------------" . PHP_EOL; echo " Test FileMaker object's main methods" . PHP_EOL; echo "------------------------------------------" . PHP_EOL; $fm = new FileMaker('filemaker-test', 'localhost', 'filemaker', 'filemaker'); /* API infos */ echo "API version : " . $fm->getAPIVersion() . PHP_EOL; echo "Min server version : " . $fm->getMinServerVersion() . PHP_EOL . PHP_EOL; /* get databases list */ echo "Get databases list..."; $databases = $fm->listDatabases(); echo implode(', ', $databases) . '...<span style="color:green">SUCCESS</span>' . PHP_EOL . PHP_EOL; /* get layouts list */ echo "Get layouts list..."; $layouts = $fm->listLayouts(); if (sizeof($layouts) != 2) { echo '<span style="color:red">FAIL</span> !' . PHP_EOL; exit; } echo implode(', ', $layouts) . '...<span style="color:green">SUCCESS</span>' . PHP_EOL . PHP_EOL; /* get layouts list */ echo "Get scripts list..."; $scripts = $fm->listScripts();