database = $conf['database']; } // Set up the stuff required to translate. $this->te = new FrxSyntaxEngine(FRX_SQL_TOKEN, ':', $this); } /** * Get data based on file data block in the repository. * * @param String $block_name * @param Array $parm_data * @param Query $subQuery */ public function sqlData($sql) { if ($this->database != 'default') { db_set_active($this->database); } // Load the block from the file $xml =''; $sql = $this->te->replace($sql); $rs = db_query($sql); $xml = new SimpleXMLElement(''); foreach ($rs as $data) { $row_node = $xml->addChild('row'); foreach ($data as $key => $value) { $row_node->addChild($key, htmlspecialchars($value)); //$row_node->$key = $value; } } if ($this->database != 'default') { db_set_active(); } if ($this->debug) { $d = ($xml) ? htmlspecialchars($xml->asXML()) : ''; $this->debug('SQL: ' . $sql, '
 SQL:' . $sql . "\n XML: " . $d . "\n
"); } return $xml; } /** * Implement custom SQL formatter to make sure that strings are properly escaped. * Ideally we'd replace this with something that handles prepared statements, but it * wouldn't work for * * @param unknown_type $value * @param unknown_type $key * @param unknown_type $data */ public function format($value, $key, $data) { $db = Database::getConnection('default'); if ($db) { if ($value==='' || $value===NULL) $value = 'NULL'; else { if (is_array($value)) { if ($value == array()) { $value = 'NULL'; } else { // Build a array of values string $i=0; $val = ''; foreach ($value as $v) { $i++; if ($i>1) { $val .= ','; } $val .= $db->quote($v); } $value = $val; } } else { $value = trim($value); $value = $db->quote($value) ; } } } return $value; } }