diff --git a/gulliver/system/class.form.php b/gulliver/system/class.form.php index 20b80465c..ec820ef0e 100644 --- a/gulliver/system/class.form.php +++ b/gulliver/system/class.form.php @@ -296,10 +296,9 @@ class Form extends XmlForm * @return array */ function validateArray($newValues) - { + { $values = array(); foreach($this->fields as $k => $v) { - if (($v->type != 'submit')) { if ($v->type != 'file') { if ( array_key_exists($k,$newValues) ) { @@ -333,17 +332,19 @@ class Form extends XmlForm $query = G::replaceDataField($this->fields[$k]->sql,$newValues); //we do the query to the external connection and we've got the label $con = Propel::getConnection($this->fields[$k]->sqlConnection!=""?$this->fields[$k]->sqlConnection:"workflow");//use default connection workflow if connection is not defined. Same as Dynaforms + $stmt = $con->prepareStatement($query); $rs = $stmt->executeQuery(ResultSet::FETCHMODE_NUM); while ($rs->next()) { - list($rowId, $rowContent) = $rs->getRow(); - + list($rowId, $rowContent) = array_values($rs->getRow());//This to be sure that the array is numeric. Some cases when is DBArray result it returns an associative. By JHL + if ($value == $rowId){ $values["{$k}_label"] .= ($i != 0 ? '|': '') . $rowContent; break; } } + //die; } } $newValues["{$k}_label"] = isset($values["{$k}_label"]) ? $values["{$k}_label"] : ''; diff --git a/gulliver/thirdparty/creole/contrib/DBArrayConnection.php b/gulliver/thirdparty/creole/contrib/DBArrayConnection.php index 9f1bb2e35..1f470dde9 100644 --- a/gulliver/thirdparty/creole/contrib/DBArrayConnection.php +++ b/gulliver/thirdparty/creole/contrib/DBArrayConnection.php @@ -19,8 +19,8 @@ class DBArrayPreparedStatement extends PreparedStatementCommon implements Prepar } private function prepareStatement($sql) { - krumo($sql); - return $str; + + return $sql; } } @@ -193,7 +193,7 @@ class DBArrayConnection implements Connection { */ public function prepareStatement($dataSql) { $this->dataSql = $dataSql; - return new DBArrayPreparedStatement($this, $dataSql['sql']); + return new DBArrayPreparedStatement($this, $this->dataSql); } /** @@ -242,6 +242,7 @@ class DBArrayConnection implements Connection { return; } $sql = array(); + $sql['selectClause'][0] = isset($matches[1]) ? $matches[1] : '';//Include selectClause. By JHL $sql['fromClause'][0] = isset($matches[2]) ? $matches[2] : ''; $sql['whereClause'][0] = isset($matches[3]) ? $matches[3] : ''; $sql['limit'] = 0; @@ -253,8 +254,8 @@ class DBArrayConnection implements Connection { * @see Connection::executeQuery() */ public function executeQuery($sql, $fetchmode = null) { - if (!is_array($sql) && strlen($sql) > 0) { - $sql = $this->parseSqlString($sql); + if (!is_array($sql) && strlen($sql) > 1) { + $this->dataSql=$sql = $this->parseSqlString($sql); } $resultSet = new DBArrayResultSet($this, $sql, $fetchmode); $tableName = $sql['fromClause'][0]; @@ -270,7 +271,7 @@ class DBArrayConnection implements Connection { if ($key == 0) continue; $flag = 1; - if (isset($sql['whereClause'])) + if (isset($sql['whereClause'])){//If there is no where then return the row foreach ($sql['whereClause'] as $keyClause => $valClause) { if (isset($valClause) && $flag == 1) { //$toEval = "\$flag = ( " . ($valClause != '' ? str_replace('=', '==', $valClause): '1') . ') ?1 :0;' ; @@ -298,14 +299,14 @@ class DBArrayConnection implements Connection { eval($toEval); } + }}else{ + } if ($flag) { $resultRow[] = $row; } } - - if ($this->dataSql['selectClause'][0] == 'COUNT(*)') { $rows[] = array('1' => 'integer'); if (isset($resultRow) && is_array($resultRow))