/** * Transform an XML document into an SQL schema * * @param string $curpath * @param QuickBooks_XML_Node $node * @param array $tables * @return */ protected static function _transform($curpath, $node, &$tables) { //print("\n"); print '' . $curpath . ' node: ' . $node->name() . "\n"; //print(' node: ' . $node->name() . "\n"); //$tables = array(); $table = ''; $field = ''; //QuickBooks_SQL_Schema::mapPathToSQL($node->name(), $table, $field); // table name //print(' table for node: ' . $table . "\n"); //print(' field for node: ' . $field . "\n"); $this_sql = array(); $other_sql = array(); QuickBooks_SQL_Schema::mapToSchema($curpath . ' ' . $node->name(), QUICKBOOKS_SQL_SCHEMA_MAP_TO_SQL, $this_sql, $other_sql); //print('mapping: '); //print_r($this_sql); //print_r($other_sql); //print("\n\n\n"); //print_r($this_sql); foreach (array_merge(array($this_sql), $other_sql) as $sql) { $table = $sql[0]; $field = $sql[1]; if (!$sql[0] or !$sql[1]) { print ' table for node: ' . $sql[0] . "\n"; print ' field for node: ' . $sql[1] . "\n"; } else { print "\n"; } if ($table) { if (!isset($tables[$table])) { //print('trying to map key for: ' . $curpath . ' ' . $name); //$map = null; //QuickBooks_SQL_Schema::mapPrimaryKey($curpath . ' ' . $name, QUICKBOOKS_SQL_SCHEMA_MAP_TO_SQL, $map); //print_r($map); //exit; $tables[$table] = array(0 => $table, 1 => array(), 2 => null, 3 => array(), 4 => array()); } } if ($table and $field) { if (!isset($tables[$table][1][$field])) { $tables[$table][1][$field] = QuickBooks_SQL_Schema::mapFieldToSQLDefinition($table, $field, $node->data()); } } } if ($node->childCount()) { /* $sql = array(); $other_sql = array(); QuickBooks_SQL_Schema::mapToSchema($curpath . ' ' . $node->name(), QUICKBOOKS_SQL_SCHEMA_MAP_TO_SQL, $sql, $other_sql); foreach (array_merge($sql, $other_sql) as $sql) { $table = $sql[0]; $field = $sql[1]; } */ foreach ($node->children() as $child) { QuickBooks_SQL_Schema::_transform($curpath . ' ' . $node->name(), $child, $tables); } } /* print('tables: '); print_r($tables); exit; foreach ($tables as $table) { //print_r($table); exit; } */ }
/** * Transform an XML document into an SQL schema * * @param string $curpath * @param QuickBooks_XML_Node $node * @param array $tables * @return */ protected static function _transform($curpath, $node, &$tables) { print '' . $curpath . ' node: ' . $node->name() . "\n"; $table = ''; $field = ''; $this_sql = array(); $other_sql = array(); QuickBooks_SQL_Schema::mapToSchema($curpath . ' ' . $node->name(), QUICKBOOKS_SQL_SCHEMA_MAP_TO_SQL, $this_sql, $other_sql); foreach (array_merge(array($this_sql), $other_sql) as $sql) { $table = $sql[0]; $field = $sql[1]; /* if (!$sql[0] or !$sql[1]) { print(' table for node: ' . $sql[0] . "\n"); print(' field for node: ' . $sql[1] . "\n"); } else { print("\n"); } */ if ($table) { if (!isset($tables[$table])) { $tables[$table] = array(0 => $table, 1 => array(), 2 => null, 3 => array(), 4 => array()); } } if ($table and $field) { if (!isset($tables[$table][1][$field])) { $tables[$table][1][$field] = QuickBooks_SQL_Schema::mapFieldToSQLDefinition($table, $field, $node->data()); } } } if ($node->childCount()) { foreach ($node->children() as $child) { QuickBooks_SQL_Schema::_transform($curpath . ' ' . $node->name(), $child, $tables); } } return true; }