PageRenderTime 48ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/FileMaker/Implementation/Parser/FMResultSet.php

https://github.com/renelof/CalendarSchedulerWeb
PHP | 281 lines | 281 code | 0 blank | 0 comment | 65 complexity | 4461efd3fad406916986e5d00759cae9 MD5 | raw file
  1. <?php
  2. require_once dirname(__FILE__) . '/../../Layout.php';
  3. require_once dirname(__FILE__) . '/../../RelatedSet.php';
  4. require_once dirname(__FILE__) . '/../../Record.php';
  5. require_once dirname(__FILE__) . '/../../Field.php';
  6. class FileMaker_Parser_FMResultSet
  7. {
  8. var $Vcb5e100e;
  9. var $Vf5bf48aa;
  10. var $V1ea7e575;
  11. var $V9f81f3c0 = array();
  12. var $Vaae0d98d;
  13. var $Vae581270 = array();
  14. var $V6e52c40b = array();
  15. var $Ve13f1c92;
  16. var $V43432a31;
  17. var $V51bc3e3b;
  18. var $V26005321;
  19. var $V6468d939;
  20. var $_fm;
  21. var $V5431b8d4;
  22. var $V6de51026 = false;
  23. var $_result;
  24. var $_layout;
  25. function FileMaker_Parser_FMResultSet(&$V0ab34ca9)
  26. {
  27. $this->_fm =& $V0ab34ca9;
  28. }
  29. function parse($V0f635d0e)
  30. {
  31. if (empty($V0f635d0e)) {
  32. return new FileMaker_Error($this->_fm, 'Did not receive an XML document from the server.');
  33. }
  34. $this->V5431b8d4= xml_parser_create('UTF-8');
  35. xml_set_object($this->V5431b8d4, $this);
  36. xml_parser_set_option($this->V5431b8d4, XML_OPTION_CASE_FOLDING, false);
  37. xml_parser_set_option($this->V5431b8d4, XML_OPTION_TARGET_ENCODING, 'UTF-8');
  38. xml_set_element_handler($this->V5431b8d4, '_start', '_end');
  39. xml_set_character_data_handler($this->V5431b8d4, '_cdata');
  40. if (!@xml_parse($this->V5431b8d4, $V0f635d0e)) {
  41. return new FileMaker_Error($this->_fm,
  42. sprintf('XML error: %s at line %d',
  43. xml_error_string(xml_get_error_code($this->V5431b8d4)),
  44. xml_get_current_line_number($this->V5431b8d4)));
  45. }
  46. xml_parser_free($this->V5431b8d4);
  47. if (!empty($this->Vcb5e100e)) {
  48. return new FileMaker_Error($this->_fm, null, $this->Vcb5e100e);
  49. }
  50. if (version_compare($this->Vf5bf48aa['version'], FileMaker::getMinServerVersion(), '<')) {
  51. return new FileMaker_Error($this->_fm, 'This API requires at least version ' . FileMaker::getMinServerVersion() . ' of FileMaker Server to run (detected ' . $this->Vf5bf48aa['version'] . ').');
  52. }
  53. $this->V6de51026= true;
  54. return true;
  55. }
  56. function setResult(&$Vb4a88417, $V561b2299 = 'FileMaker_Record')
  57. {
  58. if (!$this->V6de51026) {
  59. return new FileMaker_Error($this->_fm, 'Attempt to get a result object before parsing data.');
  60. }
  61. if ($this->_result) {
  62. $Vb4a88417 =& $this->_result;
  63. return true;
  64. }
  65. $Vb4a88417->_impl->_layout =& new FileMaker_Layout($this->_fm);
  66. $this->setLayout($Vb4a88417->_impl->_layout);
  67. $Vb4a88417->_impl->_tableCount = $this->V1ea7e575['total-count'];
  68. $Vb4a88417->_impl->_foundSetCount = $this->Vaae0d98d['count'];
  69. $Vb4a88417->_impl->_fetchCount = $this->Vaae0d98d['fetch-size'];
  70. $V6e52c40b = array();
  71. foreach ($this->V6e52c40b as $Vde17f0f2) {
  72. $V4b43b0ae =& new $V561b2299($Vb4a88417->_impl->_layout);
  73. $V4b43b0ae->_impl->_fields = $Vde17f0f2['fields'];
  74. $V4b43b0ae->_impl->_recordId = $Vde17f0f2['record-id'];
  75. $V4b43b0ae->_impl->_modificationId = $Vde17f0f2['mod-id'];
  76. if ($Vde17f0f2['children']) {
  77. foreach ($Vde17f0f2['children'] as $Vaca007a7 => $V268184c1) {
  78. $V4b43b0ae->_impl->_relatedSets[$Vaca007a7] = array();
  79. foreach ($V268184c1 as $V1b7d5726) {
  80. $V4a8a08f0 =& new $V561b2299($Vb4a88417->_impl->_layout->getRelatedSet($Vaca007a7));
  81. $V4a8a08f0->_impl->_fields = $V1b7d5726['fields'];
  82. $V4a8a08f0->_impl->_recordId = $V1b7d5726['record-id'];
  83. $V4a8a08f0->_impl->_modificationId = $V1b7d5726['mod-id'];
  84. $V4a8a08f0->_impl->_parent =& $V4b43b0ae;
  85. $V4b43b0ae->_impl->_relatedSets[$Vaca007a7][] =& $V4a8a08f0;
  86. }
  87. }
  88. }
  89. $V6e52c40b[] =& $V4b43b0ae;
  90. }
  91. $Vb4a88417->_impl->_records =& $V6e52c40b;
  92. $this->_result =& $Vb4a88417;
  93. true;
  94. }
  95. function setLayout(&$Vc6140495)
  96. {
  97. if (!$this->V6de51026) {
  98. return new FileMaker_Error($this->_fm, 'Attempt to get a layout object before parsing data.');
  99. }
  100. if ($this->_layout) {
  101. $Vc6140495 =& $this->_layout;
  102. return true;
  103. }
  104. $Vc6140495->_impl->_name = $this->V1ea7e575['layout'];
  105. $Vc6140495->_impl->_database = $this->V1ea7e575['database'];
  106. foreach ($this->V9f81f3c0 as $V06e3d36f) {
  107. $V8fa14cdd =& new FileMaker_Field($Vc6140495);
  108. $V8fa14cdd->_impl->_name = $V06e3d36f['name'];
  109. $V8fa14cdd->_impl->_autoEntered = (bool)($V06e3d36f['auto-enter'] == 'yes');
  110. $V8fa14cdd->_impl->_global = (bool)($V06e3d36f['global'] == 'yes');
  111. $V8fa14cdd->_impl->_maxRepeat = (int)$V06e3d36f['max-repeat'];
  112. $V8fa14cdd->_impl->_result = $V06e3d36f['result'];
  113. $V8fa14cdd->_impl->_type = $V06e3d36f['type'];
  114. if ($V06e3d36f['not-empty'] == 'yes') {
  115. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_NOTEMPTY] = true;
  116. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_NOTEMPTY;
  117. }
  118. if ($V06e3d36f['numeric-only'] == 'yes') {
  119. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_NUMERICONLY] = true;
  120. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_NUMERICONLY;
  121. }
  122. if (array_key_exists('max-characters', $V06e3d36f)) {
  123. $V8fa14cdd->_impl->_maxCharacters = (int) $V06e3d36f['max-characters'];
  124. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_MAXCHARACTERS] = true;
  125. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_MAXCHARACTERS;
  126. }
  127. if ($V06e3d36f['four-digit-year'] == 'yes') {
  128. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_FOURDIGITYEAR] = true;
  129. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_FOURDIGITYEAR;
  130. }
  131. if ($V06e3d36f['time-of-day'] == 'yes' || $V06e3d36f['result'] == 'time') {
  132. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIMEOFDAY] = true;
  133. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIMEOFDAY;
  134. }
  135. if ($V06e3d36f['four-digit-year'] == 'no' && $V06e3d36f['result'] == 'timestamp') {
  136. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIMESTAMP_FIELD] = true;
  137. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIMESTAMP_FIELD;
  138. }
  139. if ($V06e3d36f['four-digit-year'] == 'no' && $V06e3d36f['result'] == 'date') {
  140. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_DATE_FIELD] = true;
  141. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_DATE_FIELD;
  142. }
  143. if ($V06e3d36f['time-of-day'] == 'no' && $V06e3d36f['result'] == 'time') {
  144. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIME_FIELD] = true;
  145. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIME_FIELD;
  146. }
  147. $Vc6140495->_impl->_fields[$V8fa14cdd->getName()] =& $V8fa14cdd;
  148. }
  149. foreach ($this->Vae581270 as $Vaca007a7 => $V53256610) {
  150. $V4b43b0ae =& new FileMaker_RelatedSet($Vc6140495);
  151. $V4b43b0ae->_impl->_name = $Vaca007a7;
  152. foreach ($V53256610 as $V06e3d36f) {
  153. $V8fa14cdd =& new FileMaker_Field($V4b43b0ae);
  154. $V8fa14cdd->_impl->_name = $V06e3d36f['name'];
  155. $V8fa14cdd->_impl->_autoEntered = (bool)($V06e3d36f['auto-enter'] == 'yes');
  156. $V8fa14cdd->_impl->_global = (bool)($V06e3d36f['global'] == 'yes');
  157. $V8fa14cdd->_impl->_maxRepeat = (int)$V06e3d36f['max-repeat'];
  158. $V8fa14cdd->_impl->_result = $V06e3d36f['result'];
  159. $V8fa14cdd->_impl->_type = $V06e3d36f['type'];
  160. if ($V06e3d36f['not-empty'] == 'yes') {
  161. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_NOTEMPTY] = true;
  162. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_NOTEMPTY;
  163. }
  164. if ($V06e3d36f['numeric-only'] == 'yes') {
  165. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_NUMERICONLY] = true;
  166. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_NUMERICONLY;
  167. }
  168. if (array_key_exists('max-characters', $V06e3d36f)) {
  169. $V8fa14cdd->_impl->_maxCharacters = (int) $V06e3d36f['max-characters'];
  170. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_MAXCHARACTERS] = true;
  171. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_MAXCHARACTERS;
  172. }
  173. if ($V06e3d36f['four-digit-year'] == 'yes') {
  174. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_FOURDIGITYEAR] = true;
  175. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_FOURDIGITYEAR;
  176. }
  177. if ($V06e3d36f['time-of-day'] == 'yes' || $V06e3d36f['result'] == 'time') {
  178. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIMEOFDAY] = true;
  179. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIMEOFDAY;
  180. }
  181. if ($V06e3d36f['four-digit-year'] == 'no' && $V06e3d36f['result'] == 'timestamp') {
  182. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIMESTAMP_FIELD] = true;
  183. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIMESTAMP_FIELD;
  184. }
  185. if ($V06e3d36f['four-digit-year'] == 'no' && $V06e3d36f['result'] == 'date') {
  186. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_DATE_FIELD] = true;
  187. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_DATE_FIELD;
  188. }
  189. if ($V06e3d36f['time-of-day'] == 'no' && $V06e3d36f['result'] == 'time') {
  190. $V8fa14cdd->_impl->_validationRules[FILEMAKER_RULE_TIME_FIELD] = true;
  191. $V8fa14cdd->_impl->_validationMask |= FILEMAKER_RULE_TIME_FIELD;
  192. }
  193. $V4b43b0ae->_impl->_fields[$V8fa14cdd->getName()] =& $V8fa14cdd;
  194. }
  195. $Vc6140495->_impl->_relatedSets[$V4b43b0ae->getName()] =& $V4b43b0ae;
  196. }
  197. $this->_layout =& $Vc6140495;
  198. return true;
  199. }
  200. function _start($V3643b863, $Vb068931c, $V5d06e8a3)
  201. {
  202. $V5d06e8a3 = $this->_fm->toOutputCharset($V5d06e8a3);
  203. switch ($Vb068931c) {
  204. case 'error':
  205. $this->Vcb5e100e= $V5d06e8a3['code'];
  206. break;
  207. case 'product':
  208. $this->Vf5bf48aa= $V5d06e8a3;
  209. break;
  210. case 'datasource':
  211. $this->V1ea7e575= $V5d06e8a3;
  212. break;
  213. case 'relatedset-definition':
  214. $this->Vae581270[$V5d06e8a3['table']] = array();
  215. $this->Ve13f1c92= $V5d06e8a3['table'];
  216. break;
  217. case 'field-definition':
  218. if ($this->Ve13f1c92) {
  219. $this->Vae581270[$this->Ve13f1c92][] = $V5d06e8a3;
  220. } else {
  221. $this->V9f81f3c0[] = $V5d06e8a3;
  222. }
  223. break;
  224. case 'resultset':
  225. $this->Vaae0d98d= $V5d06e8a3;
  226. break;
  227. case 'relatedset':
  228. $this->Ve13f1c92= $V5d06e8a3['table'];
  229. $this->V51bc3e3b= $this->V43432a31;
  230. $this->V51bc3e3b['children'][$this->Ve13f1c92] = array();
  231. $this->V43432a31= null;
  232. break;
  233. case 'record':
  234. $this->V43432a31=
  235. array('record-id' => $V5d06e8a3['record-id'],
  236. 'mod-id' => $V5d06e8a3['mod-id'],
  237. 'fields' => array(),
  238. 'children' => array());
  239. break;
  240. case 'field':
  241. $this->V26005321= $V5d06e8a3['name'];
  242. $this->V43432a31['fields'][$this->V26005321] = array();
  243. break;
  244. case 'data':
  245. $this->V6468d939= '';
  246. break;
  247. }
  248. }
  249. function _end($V3643b863, $Vb068931c)
  250. {
  251. switch ($Vb068931c) {
  252. case 'relatedset-definition':
  253. $this->Ve13f1c92= null;
  254. break;
  255. case 'relatedset':
  256. $this->Ve13f1c92= null;
  257. $this->V43432a31= $this->V51bc3e3b;
  258. $this->V51bc3e3b= null;
  259. break;
  260. case 'record':
  261. if ($this->Ve13f1c92) {
  262. $this->V51bc3e3b['children'][$this->Ve13f1c92][] = $this->V43432a31;
  263. } else {
  264. $this->V6e52c40b[] = $this->V43432a31;
  265. }
  266. $this->V43432a31= null;
  267. break;
  268. case 'field':
  269. $this->V26005321= null;
  270. break;
  271. case 'data':
  272. $this->V43432a31['fields'][$this->V26005321][] = trim($this->V6468d939);
  273. $this->V6468d939= null;
  274. break;
  275. }
  276. }
  277. function _cdata($V3643b863, $V8d777f38)
  278. {
  279. $this->V6468d939.= $this->_fm->toOutputCharset($V8d777f38);
  280. }
  281. }