queryTag = new QueryTag($query, $isSubQuery); } } /** * Return table information * Used for finding column type info (string/numeric) * * Obtains the table info from XE's XML schema files * * @param object $query_id * @param bool $table_name * @return array */ function getTableInfo($query_id, $table_name) { $column_type = array(); $module = ''; $id_args = explode('.', $query_id); if (count($id_args) == 2) { $target = 'modules'; $module = $id_args[0]; $id = $id_args[1]; } elseif (count($id_args) == 3) { $target = $id_args[0]; $targetList = array('modules'=>1, 'addons'=>1, 'widgets'=>1); if (!isset($targetList[$target])) return; $module = $id_args[1]; $id = $id_args[2]; } // get column properties from the table $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name); if (!file_exists($table_file)) { $searched_list = FileHandler::readDir(_XE_PATH_ . 'modules'); $searched_count = count($searched_list); for ($i = 0; $i < $searched_count; $i++) { $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name); if (file_exists($table_file)) break; } } if (file_exists($table_file)) { $table_xml = FileHandler::readFile($table_file); $xml_parser = new XmlParser(); $table_obj = $xml_parser->parse($table_xml); if ($table_obj->table) { if (isset($table_obj->table->column) && !is_array($table_obj->table->column)) { $table_obj->table->column = array($table_obj->table->column); } foreach ($table_obj->table->column as $k => $v) { $column_type[$v->attrs->name] = $v->attrs->type; } } } return $column_type; } /** * Returns the contents for the query cache file * * @return string */ function toString() { return "queryTag->toString() . 'return $query; ?>'; } } ?>